【React框架】什么是 Vite?如何使用vite自动生成react的目录?


什么是 Vite?

Vite 是一个基于原生 ES Modules 开发的前端构建工具,由 Evan You(Vue 的作者)开发。它最大的特点包括:

  • 极速冷启动:因为利用了浏览器原生的 ES Modules,所以在开发时无需等待整个打包过程。
  • 高效热更新(HMR):文件变更后只更新改动部分,极大提升开发效率。
  • 简单配置:大部分项目即开箱即用,同时也支持灵活的配置和插件扩展。

使用 Vite 创建 React 项目

1. 确保环境准备

  • 安装 Node.js(建议使用 LTS 版本)。
  • 终端支持 npmyarnpnpm 之一。

2. 创建项目

在终端中执行以下命令即可通过 Vite 脚手架创建一个 React 项目模板:

  • 使用 npm:

    npm create vite@latest my-react-app -- --template react
    
  • 使用 yarn:

    yarn create vite my-react-app --template react
    
  • 使用 pnpm:

    pnpm create vite my-react-app --template react
    

上述命令会自动下载 Vite 模板,并生成一个名为 my-react-app 的项目目录。

3. 安装依赖

进入项目目录并安装依赖包:

cd my-react-app
npm install
# 或 yarn install / pnpm install

Vite 创建的 React 项目目录结构

创建完成后,项目的默认目录结构大致如下:

my-react-app/
├── node_modules/             # 依赖库
├── public/                   # 公共静态资源(直接被浏览器访问)
│   ├── favicon.svg           # 图标等资源文件
│   └── vite.svg              # 示例图片
├── src/                      # 源代码目录
│   ├── App.jsx               # 根组件,主要的应用逻辑
│   ├── main.jsx              # 应用入口文件,负责挂载 React 组件到 DOM
│   ├── index.css             # 全局样式文件
│   └── vite-env.d.ts         # Vite 默认提供的 TypeScript 类型声明(如果你使用 TypeScript,则包含在内)
├── .gitignore                # Git 忽略文件
├── index.html                # HTML 模板,Vite 会注入相关脚本和样式
├── package.json              # 项目配置以及依赖声明
├── README.md                 # 项目说明文档
└── vite.config.js            # Vite 配置文件,可在其中自定义构建、插件、服务器等配置

说明:

  • public/
    放置静态资源,如图片、图标、manifest 等,Vite 不会对里面的资源做预处理,浏览器直接访问。

  • src/
    主要源码存放处。main.jsx 作为入口文件,通过 ReactDOM.render()(或 React 18 的 createRoot)把 App.jsx 组件挂载到 index.html 中的 DOM 节点上。

  • index.html
    作为模板文件,Vite 将在构建时注入打包后的脚本和样式,你可以在此处添加 meta 标签、链接外部资源等。

  • vite.config.js
    配置文件用来定制 Vite 的行为,如插件配置、路径别名、开发服务器设置等。例如,可以配置插件 @vitejs/plugin-react 来增强 React 开发体验。


Vite 常用命令

在项目目录下,可以通过 package.json 中定义的脚本来运行常用命令:

  1. 启动开发服务器

    npm run dev
    

    这会启动一个本地开发服务器(默认端口 3000 或其他可用端口),支持实时热更新(HMR),在你修改代码后页面会自动更新。

  2. 构建生产版本

    npm run build
    

    该命令会把项目打包到 dist/ 目录下,使用 Rollup 进行构建和优化,生成用于部署的静态文件。

  3. 预览生产构建

    npm run preview
    

    在构建生产版本后,可通过该命令在本地启动一个模拟生产环境的服务器,方便你预览生产构建效果。


Vite 的自定义配置

vite.config.js 文件中,你可以进行各种自定义配置。例如:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';export default defineConfig({plugins: [react()],resolve: {alias: {'@': '/src', // 使用 @ 表示 src 目录},},server: {port: 3000,open: true, // 启动后自动打开浏览器},
});

常用配置包括:

  • 插件配置:通过插件扩展 Vite 的功能,如支持 React 的 Fast Refresh、TypeScript、PWA 等。
  • 路径别名:配置简化模块导入路径,提升可读性。
  • 开发服务器设置:如端口号、代理设置、自动打开浏览器等。
  • 构建选项:定制生产构建参数,如输出目录、代码分割、压缩等。

环境变量

Vite 支持基于 .env 文件的环境变量设置,需要注意的是环境变量名必须以 VITE_ 开头才能在客户端代码中访问。例如,在项目根目录下创建一个 .env 文件:

VITE_API_URL=https://api.example.com

然后在代码中通过 import.meta.env.VITE_API_URL 获取对应的值。


总结

  • 快速创建: 使用 Vite 脚手架可以非常便捷地搭建一个 React 项目。
  • 目录结构清晰: public/src/ 目录的划分让静态资源与源码分离。
  • 高效开发: Vite 利用 ES Modules 实现极速启动和热更新,大大提升开发体验。
  • 灵活配置: 通过 vite.config.js 和插件系统,你可以根据项目需求自定义各种构建和运行选项。

你可以查阅 Vite 官方文档 获取更多使用细节和高级配置内容。这样你就能根据项目需求灵活配置和扩展了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解读 React 纯组件(PureComponent)

什么是纯组件? React 的纯组件(PureComponent)是 React.Component 的一个变体,它通过浅比较(shallow comparison)props 和 state 来自动实现 shouldComponentUpdate() 方法,从而优化性能。 核心特点 1. 自动浅比较: PureCompon…

JavaScript数组方法:`some()`的全面解析与应用

文章目录 JavaScript数组方法:some()的全面解析与应用一、some()方法的基本概念语法参数说明返回值 二、some()方法的核心特点三、基础用法示例示例1:检查数组中是否有大于10的元素示例2:检查字符串数组中是否包含特定子串 四、实际应用场景1…

判断两个 IP 地址是否在同一子网 C

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> // 将点分十进制的 IP 地址转换为 32 位无符号整数 unsigned int ip_to_uint(const char *ip) { struct in_addr addr; if (inet_pton(AF_INET, ip, &am…

React 组件样式

在这里插入图片描述 分为行内和css文件控制 行内 通过CSS中类名文件控制

尚硅谷Java第 4、5 章IDEA,数组

第 4 章&#xff1a;IDEA的使用 第 5 章&#xff1a;数组 5.1 数组的概述 数组(Array)&#xff1a;就可以理解为多个数据的组合。 程序中的容器&#xff1a;数组、集合框架&#xff08;List、Set、Map&#xff09;。 数组中的概念&#xff1a; 数组名 下标&#xff08;或索…

SQL注入基本原理靶场实现

↵ 一、前言 SQL注入漏洞(SQL injection)是WEB层面高危的漏洞之一&#xff0c;也是常见的攻击方式。 二、本质 1、什么是SQL注入 SQL 注入是一种利用应用程序对用户输入数据过滤不严格&#xff0c;将恶意 SQL 代码插入到正常 SQL 语句中&#xff0c;从而操控数据库查询逻辑的…

图像预处理(OpenCV)

1 图像翻转(图像镜像旋转) 在OpenCV中&#xff0c;图片的镜像旋转是以图像的中心为原点进行镜像翻转的。 cv2.flip(img,flipcode) 参数 img: 要翻转的图像 flipcode: 指定翻转类型的标志 flipcode0: 垂直翻转&#xff0c;图片像素点沿x轴翻转 flipcode>0: 水平翻转&…

PCDN收益高低的关键因素

PCDN&#xff08;P2P内容分发网络&#xff09;收益好的三个主要关键因素是&#xff1a;硬件配置与性能、网络环境与质量、业务调度与策略。 1. 硬件配置与性能 设备稳定性与兼容性 PCDN节点需长时间稳定运行&#xff0c;硬件性能直接影响收益。例如&#xff0c;使用高性能CPU、…

『生成内容溯源系统』详解

生成内容溯源系统详解 1. 定义与核心目标 生成内容溯源系统&#xff08;Generative Content Provenance System&#xff09;是指能够追踪AI生成内容的来源、生成过程、版权归属及修改历史的技术体系。其核心目标是&#xff1a; 验证真实性&#xff1a;证明内容由特定AI模型生…

conda如何安装和运行jupyter

在Conda环境中安装和运行Jupyter Notebook是一项常见且实用的任务&#xff0c;特别是在数据科学和机器学习项目中。以下是使用Conda安装和运行Jupyter Notebook的步骤&#xff1a; 安装Jupyter Notebook 首先&#xff0c;确保你的Conda是最新的。打开终端或Anaconda Prompt&a…

QML之Flickable(滚动区域)

Flickable 是 QML 中用于创建可滚动区域的基础组件&#xff0c;它比 ScrollView 提供更底层的控制&#xff0c;适合需要自定义滚动行为的场景。 基本用法 qml import QtQuick 2.15Flickable {width: 200height: 200contentWidth: 400 // 内容总宽度contentHeight: 800 // 内…

【NumPy科学计算引擎:从基础操作到高性能实践】

目录 前言&#xff1a;技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析关键技术模块说明技术选型对比 二、实战演示环境配置核心代码实现运行结果验证 三、性能对比测试方法论量化数据对比结果分析 四、最佳实践推荐方案 ✅常见错误 ❌调试技巧 五、应用…

PandaGPT实战(1): 环境配置及效果演示

文章目录 1. 环境安装2. 数据准备2.1 模型权重获取2.2 训练数据准备3. 效果演示3.1 训练3.2 部署效果PandaGPT是首个无需显式监督即能跨六种模态执行指令微调任务的基础模型。它展现出多样化的多模态能力,包括复杂理解/推理、基于知识的描述以及多轮对话交互。 作为通用型指令…

spring security oauth2.0 使用GitHub

在 Spring Security 中集成 GitHub 的 OAuth 2.0 登录&#xff0c;可以实现用户通过 GitHub 账号快速认证。以下是完整的分步实现指南和代码示例&#xff1a; 一、前置准备 1. 在 GitHub 注册 OAuth 应用 访问 GitHub Settings → Developer settings → OAuth Apps点击 New …

QT聊天项目DAY01

1.新建初始项目 2.修改UI格式 运行效果 3.创建登录界面 设计登录界面UI 设计布局 调整布局间距 往水平布局中拖入标签和文本输入框 更换控件名称并固定高度 添加窗口部件 往现有的资源文件中导入图片 添加水平布局 4.设置登陆界面为主窗口的核心组件 #pragma once#include &l…

检测到目标URL存在http host头攻击漏洞

漏洞描述 修复措施 方法一&#xff1a; nginx 的 default_server 指令可以定义默认的 server 去处理一些没有匹配到 server_name 的请求&#xff0c;如果没有显式定义&#xff0c;则会选取第一个定义的 server 作为 default_server。 server { …

小甲鱼第004讲:变量和字符串(下)| 课后测试题及答案

问答题: 0. 请问下面代码有没有毛病&#xff0c;为什么? 请问下面代码为什么会出错&#xff0c;应该如何解决&#xff1f; 答:这是由于在字符串中&#xff0c;反斜杠()会与其随后的字符共同构成转义字符。 为了避免这种不测情况的发生&#xff0c;我们可以在字符串的引号前面…

Hyprnote开源程序是一款记录和转录您会议的 AI 记事本。 本地优先且可扩展 。

一、软件介绍 文末提供源码下载学习 Hyprnote开源程序是一款记录和转录您会议的 AI 记事本。 从您的原始会议记录中生成强大的摘要&#xff0c;本地优先且可扩展 。使用开源模型 &#xff08;Whisper & Llama&#xff09; 离线工作&#xff0c;高度可扩展 &#xff0c;由插…

FreeRTOS使任务处于阻塞态的API

在FreeRTOS中&#xff0c;任务进入阻塞状态通常是因为等待某个事件或资源。以下是常用的使任务进入阻塞态的API及其分类&#xff1a; 1. 任务延时 vTaskDelay(pdMS_TO_TICKS(ms)) 将任务阻塞固定时间&#xff08;相对延时&#xff0c;从调用时开始计算&#xff09;。 示例&…

各种“排序”的方法

文章目录 插入排序1. 直接插入排序(O(n^2))举例1&#xff1a;举例2&#xff1a;直插排序的"代码"直插排序的“时间复杂度” 2. 希尔排序(O(n^1.3))方法一方法二(时间复杂度更优) 选择排序堆排序直接选择排序 我们学过冒泡排序&#xff0c;堆排序等等。&#xff08;回…