Vite 为什么快?预构建解决什么问题?生产环境和开发环境有什么不同?
开发环境不先把整个应用打成 bundle,而是通过原生 ESM 按 URL 提供源码模块;浏览器请求到哪个模块,Vite 才转换哪个模块。这样冷启动不需要等待全量打包。
依赖通常是 CommonJS、体积大且模块很多,Vite 会用 esbuild 扫描并转换为浏览器可加载的 ESM,同时合并请求、缓存到 node_modules/.vite。依赖版本或配置变化会使缓存失效,也可以用 --force 强制重建。
生产构建使用 Rollup,负责模块图、Tree Shaking、代码分割、压缩和产物输出。因此 Vite 的开发期是按需服务模块,生产期仍然是 Bundle。