webpack原理
webpack打包后启动开发服务器,当改动模块后,跟改动模块相关的模块都要进行重新打包所以热替换慢
vite原理
直接请求服务器,先请求页面,页面发送请求到index.js,然后再发送对应模块的请求。
综上总结:
1.webpack会先打包然后启动开发服务器,请求服务器时直接给予打包结果。vite时直接启动开发服务器,请求哪个模块再对该模块进行实时编译。
2.现代浏览器本身支持ES Module,会自动向依赖的Module发送请求,vite利用这一点,将开发环境下的模块文件,作为浏览器要执行的文件,而不是向webpack那样进行打包合并。
3.vite在启动的时候不需要打包,就不需要分析模块的依赖,不需要编译,因此启动速度非常快,当浏览器请求某个模块的时候,再根据需要对模块的内容进行编译,是一种按需动态的编译方式,极大的缩短了编译时间,项目越复杂,模块越多,vite的优势就越明显,
4.当项目改动了一个模块后,仅仅需要让浏览器重新启动就可以,不像webpack那样需要把该模块的依赖全部编译一次。
5.当需要打包到生产环境,vite使用传统的rollup进行打包,所以vite优势在于开发阶段