vite 是开发非打包工具(开发阶段好用),抛弃了ie浏览器。
开发启动是否打包?
像 Webpack 这类工具的做法是将所有模块提前编译、打包进 bundle 里,换句话说,不管模块是否会被执行,都要被编译和打包到 bundle 里。bundle存放到内存中,随着项目越来越大打包后的 bundle 也越来越大,打包的速度自然也就越来越慢。
Vite 利用现代浏览器原生支持 ESM 特性,省略了对模块的打包。只是简单的启动web server服务,不用执行编译代码过程,自然就快很多。对于需要编译的文件,Vite 采用的是另外一种模式:即时编译。也就是说,只有具体去请求某个文件时才会编译这个文件。所以,这种「即时编译」的好处主要体现在:按需编译。
相对于以后启动,初次运行稍慢,进行对optimize里面配置的第三方模块依赖优化,打包到.vite_opt_cache的过程。这样后续请求这个文件时就不需要再即时去加载了
HMR
vite通过 WebSocket 实现 HMR
同样也是模式的问题,热更新的时候,Vite 只需要立即编译当前所修改的文件即可,所以响应速度非常快。
而 Webpack 修改某个文件过后,会自动以这个文件为入口重写 build 一次,所有的涉及到的依赖也都会被加载一遍,所以反应速度会慢很多。