1. 移除 preload(预载)与 prefetch(预取 )
vue 脚手架默认开启了 preload 与 prefetch,当咱们我的项目很大时,这个就成了首屏加载的最大首恶了
preload 与 prefetch 都是一种资源预加载机制;
preload 是事后加载资源,但并不执行,只有须要时才执行它;
prefetch 是用意预获取一些资源,以备下一个导航 / 页面应用;
preload 的优先级高于 prefetch。
// 敞开敞开 preload 与 prefetch
chainWebpack: config => {// 移除 preload( 预载) 插件
config.plugins.delete('preload')
// 移除 prefetch(预取) 插件
config.plugins.delete('prefetch')
}
2. 缩小打包文件的体积 productionSourceMap
productionSourceMap
在通过 vue-cli 脚手架生成的我的项目中,其值默认为 true。它的作用是用来显示或定义一些 ” 问题 ” 代码。然而对于生产环境,咱们能够进行敞开。这样可能对于打包后文件的体积有很大的缩小
vue.config.js module.exports = {productionSourceMap: false}
3.webpack 分包
在 Webapck4.x 版本之前,应用 CommonsChunkPlugin 去做拆散,webpack 4 最大的改变就是破除了 CommonsChunkPlugin 引入了 optimization.splitChunks。如果你的 mode 是 production,那么 webpack4 就会主动开启 Code Splitting。
config.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
// cacheGroups 下能够能够配置多个组,每个组依据 test 设置条件,合乎 test 条件的模块
commons: {
name: 'chunk-commons',
test: resolve('src/components'),
minChunks: 3, // 被至多用三次以上打包拆散
priority: 5, // 优先级
reuseExistingChunk: true // 示意是否应用已有的 chunk,如果为 true 则示意如果以后的 chunk 蕴含的模块曾经被抽取进来了,那么将不会从新生成新的。},
node_vendors: {
name: 'chunk-libs',
chunks: 'initial', // 只打包初始时依赖的第三方
test: /[\\/]node_modules[\\/]/,
priority: 10
},
vantUI: {
name: 'chunk-vantUI', // 独自将 vantUI 拆包
priority: 20, // 数字大权重到,满足多个 cacheGroups 的条件时候分到权重高的
test: /[\\/]node_modules[\\/]_?vant(.*)/
}
}
})
config.optimization.runtimeChunk('single')