Webpack 的分包方式
文章类型:webpack
发布者:hp
发布时间:2025-05-07
定义:通过配置多个入口文件,将不同入口的代码打包成独立的文件,适用于多页面应用或功能模块拆分
代码:
module.exports = {
entry: {
main: './src/main.js',
vendor: './src/vendor.js'
},
output: {
filename: '[name].bundle.js'
}
};
局限性:不同入口若引入相同依赖,可能导致重复加载
定义:使用 import() 语法实现按需加载,Webpack 会自动将模块分割为独立 chunk
代码:
import(/* webpackChunkName: "home" */ '../component/home.vue')
.then(module => { /* 使用模块 */ });
优点:减少初始加载体积
缺点:需处理异步逻辑
定义:通过配置 optimization.splitChunks 自动提取公共模块或第三方库
代码:
module.exports = {
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
}
};
优点:提升缓存命中率
缺点:配置复杂度较高
定义:将 Webpack 的运行时代码单独打包,避免因公共代码变更导致缓存失效
代码:
module.exports = {
optimization: {
runtimeChunk: 'single'
}
};
定义:通过注释 /* webpackPreload: true */ 或 /* webpackPrefetch: true */ 优化资源加载优先
代码:
webpackPreload: true
webpackPrefetch: true
1:入口分离=>多页面应用、独立功能模块
2:动态导入=>按需加载的非首屏模块
3:SplitChunksPlugin=>公共代码、第三方库优化
4:运行时分包=>长期缓存优化
5:预加载/预获取=>关键资源加速加载