作者:ALL_TTDD | 来源:互联网 | 2023-12-09 08:10
本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。
- 源代码index.js里包含2部分
- ① 业务逻辑代码 1mb
- ② 引入(如lodash包)的代码 1mb
- 若更新了业务逻辑代码,但在浏览器运行时每次都下载2mb的index.js显然不合理,第三方包是不会变的
手动拆分
entry: {main: path.resolve(__dirname, "../src/index.js"),loadsh: path.resolve(__dirname, "../src/lodash.js"),
},
import _ from 'lodash'
window._ = _
const res = _.join('test', 1)
console.log(1, res)
<script type&#61;"text/Javascript" src&#61;"js/main.js"></script>
<script type&#61;"text/Javascript" src&#61;"js/loadsh.js"></script>
使用webpack插件
https://webpack.docschina.org/plugins/split-chunks-plugin/#defaults
- 配置optimization
- 依然在index.js中引入lodash.js
entry: {main: path.resolve(__dirname, "../src/index.js"),
},
optimization: {splitChunks: {chunks: &#39;all&#39; }
},
异步代码
function createElement() {return import(&#39;lodash&#39;).then(({ default: _ }) &#61;> {const res &#61; _.join([1, 2, 3], &#39;*&#39;)const div &#61; document.createElement(&#39;div&#39;)div.innerText &#61; resreturn div})
}
createElement().then((div) &#61;> {document.body.appendChild(div)
})
- 注意&#xff0c;异步代码webpack.base.js中不需要配置optimization
- 打开页面时&#xff0c;0.js会延迟一点下载
代码分割重命名
- import前添加注释
webpackChunkName: "my-loadsh"
function createElement() {return import( &#39;lodash&#39;).then(({ default: _ }) &#61;> {const res &#61; _.join([1, 2, 3], &#39;*&#39;)const div &#61; document.createElement(&#39;div&#39;)div.innerText &#61; resreturn div})
}
createElement().then((div) &#61;> {document.body.appendChild(div)
})
vendors从哪来&#xff1f;
- webpack.base.js 配置cacheGroups后
optimization: {splitChunks: {chunks: &#39;all&#39;,cacheGroups: {vendors: false,default: false,}}
},
- 可配置&#xff1a;
- minSize 对多大的文件分割打包
- minChunks 在入口中引入模块次数>&#61; n时才会做代码分割