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')