vite和webpack的区别

37 阅读2分钟

vite

  1. 开发环境构建速度很快,不会说扫描全部的文件,而是单纯启动一个http服务器,然后按照import链去加载文件,自带懒加载和按需加载,越是复杂的项目反而开发体验更好,但是不一定整体项目用户使用体验好
  2. 定点定文件热更新

以上两点可以通过观察network去看出来:

vite是按照编写时候的文件加载的,第三方库和对应的js/vue等等都会自动按照文件加载;

webpack如果不配置的话会vue入口自动打包成一个bundle文件,该文件包括在此刻才按需引入的第三方库,剩下全局引用的第三方库分在chunk-vendors.js,代码执行文件放入app.js

  1. 按照hash值打包,打包文件进行错误定位的时候不太友好。
  2. 自带很多配置,多入口的时候更是配置简单,但是相对应社区生态配置不够灵活和定制化,兼容性有所缺陷,比如旧浏览器和微前端等复杂场景,而且打包固定按照contentHash去识别,而且不太好实现手动的代码分割策略,很多时候都是自动使用vite自带的一套策略
  3. 打包引擎用的rollup,所以tree-shaking更彻底,所以打包总体积往往更小,但不代表首屏加载文件体积更小

webpack:

  1. 开发环境就会进行打包,导致耗时很慢
  2. 热更新不灵活,热更新需要重编译打包bundle耗时会更长
  3. 打包可以自定义名字,对于错误定位很友好
  4. 可以实现高度定制化,兼容性好,同时意味着很多东西原生不自带需要手动配置,比如多入口的时候可能需要配置很多的重复变动操作(每个入口都需要配置一遍),很多配置也因此比较灵活
  5. 打包引擎就是webpack,tree-shaking可能不是很彻底,特别是对于现代浏览器端用的多的es模块比vite劣势
  6. webpack5自带模块联邦,对微前端场景很友好

前端构建工具Webpack、Rollup、esbuild和SWC的区别前端构建工具Webpack、Rollup、esbu - 掘金 (juejin.cn)