vite为什么比webpack快?

4 阅读1分钟

总结

  • webpack是全部编译打包后然后启动
  • vite是先启动,然后再按需编译
  • 所以项目越大,vite的优势就越明显

打包过程

  • webpack是从入口文件,然后递归进行分析依赖,然后构建依赖图,然后将所有打包成bundle。
  • vite是直接启动一个ESM静态服务器,然后直接将es代码丢给浏览器,请求到某个文件然后vite再去编译它。

构建方式

  • webpack要将所有用到的依赖进行编译和打包,还要经过各种loader处理,loader是js写的,速度是以s/min来进行计量的
  • vite在生产环境使用Rollup进行构建,开发环境使用ESbuild来处理(ts转义,jsx转义,依赖预构建)Esbuild是使用GO语言编写的,速度以ms/s来计量的。生产环境使用Rollup进行打包,然后tree-sharking,动态导入优化都很成熟

热更新

  • Webpack改了某一个文件,会进行依赖图的更新,部分依赖会重新编译构建

  • vite是改了某一个文件,只会重新编译这个文件和这个文件依赖的模块