当前位置: 首页 > Web前端 > vue.js

Vue项目前端性能优化总结

时间:2023-03-31 22:22:50 vue.js

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{work(this.arr[this.i++])img.onload=null;};}//console.log(((this.i+1)/this.arr.length)*100);}else{resolve()}}work(this.arr[this.i])})}}添加A圈菊花或加载动画/提示等,然后调用此方法屏蔽页面:constimgs=['http://XX.png','http://XX.png']constpreload=newthis.$utils.preload(imgs)constpreDone=awaitpreload.imgs()题外话1.三个层次常见的前端优化:网络请求,JS优化,CSS优化减少HTTP请求图片延迟加载使用字体图标或svg,尽量不要使用png,png尽量使用cssimagesprites避免使用闭包,减少DOM回流重绘,避免使用css表达式不要使用cookies,不要使用iframe,不要使用flash尽量减少对大量第三方库的引用(减少资源大小)2.新版本中vue-cli的GUI界面tool集成了一个不错的分析工具,可以直观的看到项目编译文件的大小。有针对性地分析和改进代码也是优化的重要手段

猜你喜欢