Webpack采用先打包再运行的方式,Vite则按需编译;Webpack冷启动慢、HMR延迟大、配置复杂,Vite启动快、HMR精准、开箱即用;生产构建Webpack自研打包器,Vite用Rollup;Webpack生态成熟适配老旧场景,Vite更适合现代新项目。
JavaScript 的构建工具,主要是用来把源代码转换成浏览器能运行的格式,并做优化、打包、模块管理
等事情。目前最主流的是 Webpack 和 Vite,它们定位相似,但实现思路和使用体验差别很大。
Webpack 是“先打包,再运行”:启动开发服务器前,它会扫描整个项目,分析所有依赖,生成一个或多个 bundle 文件(比如 main.js),然后把 bundle 提供给浏览器。每次改代码,它都要重新处理受影响的部分,再更新 bundle —— 项目越大,这个过程越慢。
Vite 是“不打包,按需编译”:开发时直接起一个本地服务器,浏览器请求哪个模块,Vite 就即时编译哪个模块(比如把 Vue 单文件组件转成 ESM、把 TypeScript 编译成 JS)。改一行代码,只重编那一块,热更新基本无感。
Webpack 在生产环境用自己的打包器做压缩、分割、tree-shaking;Vite 则在生产构建阶段切换成 Rollup(更轻量、更适合现代 JS),默认产物体积更小、运行更快。
不过 Rollup 对超大项目(比如上万模块)的构建调度能力略弱于 Webpack,部分企业级场景(如微前端 Module Federation)目前仍是 Webpack 更成熟。