Vite
Vite
Vite(法语 “快速 “的意思,发音为
- 一个通过原生
ES 模块为您的源文件提供服务的开发服务器,具有丰富的内置功能和惊人的快速热模块替换(HMR) 。 - 一个使用
Rollup 进行代码打包的命令,预先配置为生产输出高度优化的静态资产。
如今,大多数
import { foo } from "./other-module";
这种语法已经在各大浏览器中得到了广泛的本地支持。然而,在浏览器对
- 服务器启动慢。当启动开发服务器时,
bundler 总是急切地抓取你的整个应用程序,即使有代码分割点存在。例如,在一个有十几条路由的应用中,每条路由都是懒加载的,你仍然需要等待捆绑器处理你应用中的每一个文件,然后才能开始处理单个路由页面。在服务器启动时不需要做任何准备工作,Vite 只需在浏览器发出请求时按需编译并提供文件。在代码分离的应用中,只有当前路由页面使用的模块需要被服务。

- 更新速度慢。当一个文件被编辑时,除了重新构建文件本身外,捆绑器还需要使其部分模块图无效,并重新构建整个捆绑。这意味着随着你的应用规模的增长,从保存文件到看到浏览器中反映的变化之间的反馈速度会线性恶化。在大型应用程序中,即使启用了热模块替换,这个捆绑重新构建步骤也会变得非常昂贵。
Vite 是如何解决的。每一个被服务的文件都会通过HTTP 头文件进行缓存( 只要有可能就会有304 未修改) ,如果浏览器缓存被禁用,则通过Vite 的内存缓存。在文件编辑上,我们只是将该文件的缓存无效化。此外,在原生ESM 上的热模块替换只需要精确地重新获取无效的模块,这使得无论您的应用程序的大小,它都会持续快速。
即使现在广泛支持原生
Vite 遗留问题
笔者在项目中尝试用
- 对于
node_modules 中的Less 系列支持不友好,不能兼容组件使用Less 的场景