Vite 的速度优势来自两条核心思路:开发阶段不预先打包源码,而是利用浏览器原生 ES Modules 按需加载;同时用原生语言编写的高性能编译器处理转换,避免 JavaScript 层工具的性能瓶颈。
传统打包工具在启动开发服务器前,需要先把整个应用及其依赖全部打包,项目越大等待越久。Vite 则把源文件视为原生 ES Modules,浏览器请求哪个模块,Vite 才实时编译并返回哪个模块,未访问的模块完全不处理。这种按需编译机制让开发服务器几乎可以瞬间启动,与项目规模基本无关。
浏览器直接加载大量零散模块会带来过多的网络请求,且许多依赖是 CommonJS 格式无法被浏览器直接运行。Vite 在首次启动时用 esbuild(历史版本)或 Rolldown(Vite 8 起)对 node_modules 中的依赖做一次预构建,把 CommonJS 转为 ESM、把零散模块合并为单个文件,从而显著减少请求数量、加快页面加载。
Vite 8 之后,解析、转换、压缩等环节统一由 Rust 编写的 Oxc 工具链承担,相比早期基于 Babel、esbuild、Rollup 的 JavaScript 方案,能够利用原生多线程执行,转换与打包速度提升明显。