深度探析Webpack和Vite的区别?

前置:现代浏览器原生 ES module支持,只需要在<script>标签中添加type="module",就可以使用ES module了。在<script type="module">中,浏览器遇到内部的import引用时,会自动发起http请求,去加载对应的模块。

Webpack:

底层代码是nodejs,单线程

开发阶段优先全量打包

热更新:每次修改,重新打包

 


Vite:

底层代码是Go编写的esbuild,多线程并行

开发阶段:优先预构建(esbuild),将所有模块转换为es module,不直接打包。浏览器需要加载某个模块时,拦截浏览器发出的请求,根据请求进行按需编译,然后返回给浏览器。(冷启动比webpack快)。生产环境中,Vite 才会进行打包操作。

热更新:

1.监听到文件变更后,会用websocket通知浏览器,重新发起新的请求,只对该模块进行重新编译,然后进行替换。

2.并且基于es module的特性,vite利用浏览器的缓存策略

【源码模块】(我们自己写的代码)协商缓存处理,

【依赖模块(第三方库)】              强缓存处理

生产阶段:

Rollup 高效打包

简洁配置(没有webpack复杂)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值