注意事项:
1、vue-cli4版本测试环境无奈打包出带有hash值的文件名,解决办法:

即使设置filenameHashing:true,也是有效的,vue-cli4版本是认准NODE_ENV='production',如果想执行 npm run build:stage【指令对应环境变量文件是env.staging】,须要设置NODE_ENV='production'

优化次要步骤:
1、应用插件compressionPlugin进行gzip进行压缩,成果很显著

装置 npm install --save-dev compression-webpack-plugin如果装置失败,指定版本npm install --save-dev [email protected]const CompressionWebpackPlugin = require('compression-webpack-plugin');chainWebpack(config) {    config.plugin('compressionPlugin').use(      new CompressionWebpackPlugin({        test: /\.(js|css|json|ico|svg)$/,// 匹配文件格式        algorithm: 'gzip',        threshold: 10240, // 对超过10k的数据压缩        minRatio: 0.8, // 压缩比        deleteOriginalAssets: false //是否删除源文件      })    );}nginx配置,间接粘贴在http {} 外面  gzip on; #其余属性不必,这个肯定要开,开启浏览器压缩申请  gzip_buffers 4 16k; # 压缩响应的缓冲区的数量和大小  gzip_comp_level 9;  # 响应压缩的级别,1-9,数字越大压缩得越好,但越耗时间  gzip_http_version 1.1; # 默认1.1,所需的最小HTTP版本  gzip_min_length  1k;  # 压缩最小大小,小于该值的文件不会被压缩  gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;  gzip_disable "MSIE [1-6]\.";  gzip_vary on; 

2、应用vue-cli4自带的splitChunks来分隔代码,会对公共模块进行抽取

chainWebpack(config) {   config      .when(process.env.NODE_ENV !== 'development',        config => {          config            .plugin('ScriptExtHtmlWebpackPlugin')            .after('html')            .use('script-ext-html-webpack-plugin', [{              inline: /runtime\..*\.js$/            }])            .end()          config            .optimization.splitChunks({              chunks: 'all',              cacheGroups: {                libs: {                  name: 'chunk-libs',                  test: /[\\/]node_modules[\\/]/,                  priority: 10,                  chunks: 'initial'                },                elementUI: {                  name: 'chunk-elementUI',                   priority: 20,                   test: /[\\/]node_modules[\\/]_?element-ui(.*)/                 },                commons: {                  name: 'chunk-commons',                  test: resolve('src/components'),                   minChunks: 3,                  priority: 5,                  reuseExistingChunk: true                }              }            })                    config.optimization.runtimeChunk('single')        }      )}

3、cdn援用依赖资源,不要应用预加载rel='prefetch',节约首页加载性能;
4、图片压缩,去除空格插件terser-webpack-plugin,等等
5、入口文件main.js的按需引入也是比拟重要的,只有在首页关联用到的文件,都会加载splitChunks切出来的文件,所以须要按需引入。
6、路由懒加载等开发细节,本人把控就好。