Webpack 是一个打包器(Bundler),它在开发服务器启动前,需要分析整个依赖图,将所有模块打包成 Bundle。项目越大,启动越慢。
Vite 则利用了现代浏览器原生支持的 ES Modules (ESM) 能力。
当浏览器请求 import { createApp } from 'vue' 时,Vite 服务器拦截请求,实时返回对应的 JS 文件。Vite 不做打包,只做转换。
对于第三方依赖(如 lodash, vue),Vite 使用 Esbuild(基于 Go 编写,比 JS 快 10-100 倍)进行预构建,将其转换为单一的 ESM 模块,解决了大量 HTTP 请求的问题。