webpack前端性能优化

本文介绍了在开发环境中如何利用Webpack的HMR功能实现修改后无需完全重新打包,以及source-map的种类与用途。在生产环境中,重点讨论了一次性处理所有文件的oneOf策略、缓存优化、treeshaking、代码分割、懒加载与预加载、PWA应用、多进程打包和externals的使用。此外,还提到了DLL技术来提升打包速度和第三方库管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  开发环境下: 

1.每次修改不用全部重新打包(HMR功能):

在devServer里,加 hot :true

  index.html:

index.js:

  source-map,构建源代码和构建后代码的映射,如果构建后的代码出问题,知道在哪个源代码中,便于修改。只需要在webpack.config.js中加入devtool:'source-map'

inline-只生成内联source-map,只有一个source-map

hidden:隐藏源代码

eval :每一个文件都生成对应source-map

nosource:全部隐藏

cheap:只显示错误到行

module: 将loader的source map加入

生产环境:

1.oneOf

由于文件会把所有的rules都走一遍,所以,需要给给些规则加oneOf[...]:而把需要两次处理的如对js的语法检查放在最开始。

2.缓存优化:babel缓存、源代码缓存

 文件资源缓存:强缓存更新不及时,所以使用hash 给文件取个别名,如果文件改了文件名就改了,会重新请求资源。但是打包导致所有文件hash都变了。资源全部重新申请。需要用到chunkHash,但是同一个chunkhash的其他文件也会改名。最后使用contenthash,只有本文件改了才重新请求。

3. tree shaking:去除没有使用的代码

前提:使用ES6模块化、开启production  环境

4.代码分割--》实现并行加载、按需加载

1.

2.

 3.

5.懒加载和预加载:

懒加载:文件需要才会加载。把需要懒加载的文件单独分割,将import放在某个异步函数的回调里(如click)。不会重复加载,只有第一次加载,后面就用缓存中的文件了

预加载:webpackPrefetch:true   文件一开始就被加载了,只是在其他必须文件加载完后偷偷加载的。

 6.PWA:像APP一样可以离线访问

 (使用方法不讲了,兼容性不太好)

 7.多进程打包,加快打包速度(放在某个loader后面):

 8.externals,资源原本是用连接引入的,防止打包成我们自己的文件

 

 DLL(第三方库单独打包,只需要打包一次):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值