webpack优化主要有三个方面:1.提高构建速度,2.减少打包体积,3.优化用户体验
提高构建速度:
-
启用多线程
thread-loader
使用thread-loader插件可以启用多线程进行构建。 -
使用缓存
cache-loader
使用cache-loader插件可以对构建进行缓存,加快后续的构建速度。 -
热更新
热更新只更新改动的代码文件,无需编译整个项目。 -
exclude&include
exclude选项是构建时忽略的文件,include选项是构建时需要构建的文件。配置好exclude和include,可以避免对不必要的文件进行构建。
减少打包体积
-
压缩css代码
css-minimizer-webpack-plugin -
压缩js代码
terser-webpack-plugin -
tree-shaking
tree-shaking就是只编译需要的代码。
webpack5该特性默认启用。 -
source-map
source-map帮助在源代码中定位bug。
开发模式使用更精确但体积更大的source-map
module.exports = {
mode: 'development',
devtool: 'eval-cheap-module-source-map'
}
生产模式使用体积小但不那么精确的source-map
module.exports = {
mode: 'production',
devtool: 'nosources-source-map'
}
- 打包分析
webpack-bundle-analyzer插件可以看到各个文件的打包大小,帮助对对应的文件进行优化
优化用户体验
- 延迟加载模块
在vue中,用下面箭头函数的方式引入模块,就可以按需加载模块。react的延迟加载和vue类似,angular也有自己的延迟加载方式。
// src/router/index.js
const routes = [
{
path: '/login',
name: 'login',
component: login
},
{
path: '/home',
name: 'home',
// lazy-load
component: () => import('../views/home/home.vue'),
},
]
-
Gzip
最常见的压缩文件的算法。可以在网络传输中压缩数据,加快传输速度。需要后端的配合。
插件 compression-webpack-plugin -
base64
小图片可以转成base64嵌进代码中,减少http请求数量。
插件 asset-module -
hash
如下配置可以给打包文件加上hash后缀,生成hash后缀管理浏览器缓存。只要文件名和之前不同,浏览器就会向服务端重新请求文件。反之,浏览器会从协商缓存中读取文件。重新部署了项目,文件名称未修改,客户端不一定能获取到最新的代码。
webpack会自动更改有改动的打包文件的hash后缀,可以自动实现文件的缓存管理。
output: {
path: path.resolve(__dirname, '../dist'),
filename: 'js/chunk-[contenthash].js',
clean: true,
},
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com