React 官方推荐使用 Vite

React 官方文档现在确实明确推荐使用 Vite 作为构建新 React 项目的首选工具之一

这标志着 React 生态系统的一个重要转变。下面我将详细解释为什么会有这个推荐,以及 Vite 相比传统的 Create React App 有什么优势。

为什么 React 官方推荐 Vite?

在 2023 年更新的 React 官方文档中,Vite 和 Create React App 都被列为创建新项目的推荐方式,但 Vite 因其卓越的性能和开发体验而备受青睐。


Vite 的核心优势

1. 极速的服务器启动
  • 传统工具(如 CRA/Webpack): 在启动开发服务器时,需要先打包整个项目的所有模块,然后才能提供服务。项目越大,启动越慢。
  • Vite: 利用了浏览器对 ES 模块的原生支持。它根本不需要在启动时打包你的代码,而是按需编译和提供源代码。这使其服务器启动速度极快,无论项目规模多大,通常都能在毫秒级完成。
2. 高效的热模块更新
  • 传统工具: 当文件发生变化时,Webpack 需要重新构建变动的模块及其依赖图的一部分,然后通知浏览器更新。这在大项目中会有明显的延迟。
  • Vite: HMR 是在原生 ES 模块之上执行的。当一个模块被修改时,Vite 只需要让浏览器重新请求该单个模块即可。这使得热更新几乎瞬间完成,大大提升了开发效率。
3. 优化的构建
  • Vite 在生产环境构建时使用 Rollup(一个以输出高效、轻量打包文件而闻名的工具)。
  • Rollup 能生成树摇优化非常好的代码,并且 Vite 提供了开箱即用的代码分割、资源处理等配置,确保最终的生产版本尽可能小和高效。
4. 丰富的功能与灵活性
  • 开箱即用: 对 TypeScript、JSX、CSS 和各类 CSS 预处理器(如 Less, Sass)提供了原生支持,无需额外配置。
  • 易于配置: 它的配置文件 vite.config.js 非常简洁明了。相比于 Webpack 复杂的配置,Vite 的配置学习曲线更平缓。
  • 插件生态系统: 拥有一个兼容 Rollup 插件格式的、不断增长的插件生态系统,可以轻松扩展功能。

Vite vs. Create React App

特性 Vite Create React App
开发服务器启动 极快(利用 ES 模块) 慢(需要预先打包)
热更新 极快(基于 ES 模块的 HMR) 较慢
配置复杂度 灵活且简单 抽象度高,需要 eject 才能自定义配置
构建工具 开发:ESBuild,生产:Rollup Webpack(开发和生产)
对现代工具的支持 一流(原生支持 ES 模块等) 良好,但架构较传统

关键点: CRA 的主要目标是零配置 ,让初学者能快速上手。但随着生态的发展,它的缓慢启动和"黑盒"配置(需要通过 eject 来获取,但这是一条不可逆的单行道)成为了瓶颈。Vite 在提供近乎零配置体验的同时,还带来了极致的速度和配置灵活性。


如何使用 Vite 创建 React 项目?

使用 Vite 创建新项目非常简单。官方推荐使用以下命令:

bash 复制代码
# 使用 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

然后进入项目目录,安装依赖并启动:

bash 复制代码
cd my-react-app
npm install
npm run dev

你几乎会立刻看到开发服务器运行起来。

总结

React 官方推荐 Vite 是一个顺理成章的决定,因为它代表了前端工具链的未来方向:更快的速度、更好的开发体验和更现代的架构。

  • 对于新项目 ,除非有特殊原因必须使用 CRA,否则强烈建议从 Vite 开始
  • 对于现有的 CRA 项目,如果开发速度让你感到痛苦,可以考虑迁移到 Vite。Vite 官方提供了迁移指南,过程通常比较顺利。

总而言之,拥抱 Vite 就是拥抱一个更快、更愉快的 React 开发体验。

相关推荐
章豪Mrrey nical4 小时前
前后端分离工作详解Detailed Explanation of Frontend-Backend Separation Work
后端·前端框架·状态模式
程序员爱钓鱼5 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder5 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL6 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码6 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_6 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy7 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌7 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight7 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm