Appearance
为什么选择 Vite
如果你还不知道什么是 Vite 的话点击 这里,快速了解。
极速的启动
Vite 非常非常快,对比 Webpack(Vue-cli): 同等量代码(vue3 项目 15个组件、4个页面),不同构建工具执行的 dev 和 build 操作时长如下
| 项目 | dev 启动时长 | dev 页面加载 | build 时长 |
|---|---|---|---|
| vite | 4834ms | 537ms | 7.26s |
| vue-cli | 387ms | 580ms | 4.26s |
Vite 和 Webpack 两者的 dev 命令运行耗时相差十几倍,理论上来说,项目越大性能差距越大。其中最大的原因是 Vite 在开发模式下并没有做太多打包操作。
Webpack 启动后会做一堆事情,经历一条很长的编译打包链条,从入口开始需要逐步经历语法解析、依赖收集、代码转译、打包合并、代码优化,最终将高版本的、离散的源码编译打包成低版本、高兼容性的产物代码,这可满满都是 CPU、IO 操作啊,在 Node 运行时下性能必然是有问题。
而 Vite 以原生 ESM 方式服务源码。这实际上是让浏览器接管了打包程序的部分工作:Vite 只需要在浏览器请求源码时进行转换并按需提供源码。根据情景动态导入的代码,即只在当前屏幕上实际使用时才会被处理。
基于打包器的开发服务器
基于 ESM 的开发服务器
快速的热重载
同样也是模式的问题,热更新的时候,Vite 只需要立即编译当前所修改的文件即可,所以响应速度非常快。
而 Webpack 修改某个文件过后,会自动以这个文件为入口重写 build 一次,所有的涉及到的依赖也都会被加载一遍,所以反应速度会慢很多。
对于 TypeScript 支持
Vite 支持开箱即用地引入 .ts 文件。
Vite 使用 esbuild 将 TypeScript 翻译到 JavaScript,约是 tsc 速度的 20~30 倍,同时 HMR 更新反映到浏览器的时间小于 50ms。