webpack和vite的对比

1,050 阅读2分钟

转发自blog.csdn.net/weixin_4299…

为什么使用打包工具:
1.未打包项目通常文件很多,全部上传到服务器后,用户访问时会发送大量HTTP请求,服务器压力大且用户体验不好。
2.前端需要模块化开发,浏览器本身并不支持,所以我们需要一个工具,将模块化代码转化为浏览器支持的代码。
3.减少源代码暴露风险,借助webpack可以重组和混淆源代码,增加黑客读代码难度。
4.提供本地服务器。

  1. 都是现代化打包工具。
  2. 为什么vite启动快
    2.1 首先,底层语言。Vite是基于esbuild预构建依赖,esbuild是采用go语言编写,go语言操作按纳秒计,而js是毫秒计,所以Vite比js编写的打包器快10-100倍。
    2.2 其次,启动方式不同:
    webpack:逐级递归分析依赖-打包-由本地服务器渲染。先递归分析各模块依赖-构建依赖图谱,然后打包,再启动本地服务器,直接显示打包结果。存在问题:随着模块增多,造成bundle体积过大,进而拖慢热更新速度。
    Vite:先启动服务器-按需动态请求模块并编译显示。先启动服务器,按需要请求某个模块时,对其进行实时编译,因为现代浏览器本身支持ES-Module,所以会自动想依赖的module发出请求。所以Vite就将开发环境下的模块文件当做浏览器的执行文件,而不是想webpack在打包后交给本地服务器。 由上可知,Vite快的原因:启动时不需要打包,所以不需要分析模块之间的依赖关系,不用进行编译。项目越大,优势越明显。热更新同样更快,改动了某模块后,Vite只需要重新请求该模块,而webpack需要重新编译该模块以及模块全部依赖。
  • webpack启动原理图

image.png

  • Vite启动原理图

image.png

Vite优点:打包快、热更新快。
Vite缺点:生态环境不完善,可以作为开发的辅助。