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 开发体验。

相关推荐
Running_slave1 小时前
你应该了解的TCP滑窗
前端·网络协议·tcp/ip
程序员小寒1 小时前
前端高频面试题之CSS篇(一)
前端·css·面试·css3
颜酱2 小时前
Monorepo 架构以及工具选型、搭建
前端·javascript·node.js
oden2 小时前
ChatGPT不推荐你?7个GEO技巧让AI主动引用你的内容
前端
李游Leo3 小时前
前端安全攻防指南:XSS / CSRF / 点击劫持与常见防护实践(含真实案例拆解)
前端·安全·xss
我命由我123453 小时前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
E***q5393 小时前
Vue增强现实开发
前端·vue.js·ar
S***42803 小时前
JavaScript在Web中的Angular
前端·javascript·angular.js
黑幕困兽3 小时前
ehcarts 实现 饼图扇区间隙+透明外描边
前端·echarts
San303 小时前
深入理解 JavaScript 词法作用域链:从代码到底层实现机制
前端·javascript·ecmascript 6