0.路由懒加载路由组件不使用直接导入,而是匿名函数返回形式,下面的注释可以定义编译后的js文件的名称,没有进入路由时js文件的内容将不会被请求:{path:'/home',component:()=>import(/*webpackChunkName:'base'*/'@/views/Index.vue')}1.启用gzip压缩1.1。gzip功能需要在服务器端配置。比如我的是nginx.conf配置:gzipon;gzip_min_length80k;gzip_buffers416k;gzip_comp_level5;gzip_types文本/普通应用程序/javascript文本/css应用程序/xml文本/javascript应用程序/x-httpd-php图像/jpeg图像/gif图像/png;1.2.vue.config.js配置编译gzip,npm安装相关插件:constCompressionWebpackPlugin=require('compression-webpack-plugin')module.exports={configureWebpack:config=>{if(process.env.NODE_ENV==='production'){config.plugins.push(newCompressionWebpackPlugin({filename:'[path].gz[query]',algorithm:'gzip',test:newRegExp('\\.('+productionGzipExtensions.join('|')+')$'),阈值:10240,minRatio:0.8}));}},}2.使用插件压缩混淆注释constTerserPlugin=require('terser-webpack-plugin')module.exports={configureWebpack:config=>{if(process.env.NODE_ENV==='production'){config.plugins.push(newTerserPlugin({cache:true,parallel:true,sourceMap:false,terserOptions:{compress:{drop_console:true,drop_debugger:true}}}));}},}3.去除多余的第三方库3.1。删除库npm命令:npmuninstallxxx3.2。把非必须的库放在服务端,比如moment.js这个处理时间的常用库,比较大,建议放在后端,或者使用day.js等替代方案,如果有时间和精力,也可以自己封装方法,但不建议重复造轮子使用传统方式导入,有利于减小编译包的体积。4、资源CDN资源文件CDN,比如图片资源,我是放在七牛云上的,从不放服务器。七牛云好像可以通过配置域名来加速CDN,比较方便。如果客户端有特殊的定制需求,比如国内地址需要自己配置,其配置文件比较大,也应该在客户端提取出来,不要打包。configureWebpack:config=>{if(isProduction){config.plugins.push(.....//单独的包config.externals={'vue':'Vue','vue-router':'VueRouter','vuex':'Vuex','axios':'axios'}}},5.图片预加载防止多图或大图影响客户端浏览体验:exportdefaultclassPreLoad{privatei:number;privatearr:string[];构造函数(arr:string[]){this.i=0this.arr=arr}publicimgs(){returnnewPromise(resolve=>{constwork=(src:string)=>{if(this.i
