免费提供ppt模板的网站,施工效果图怎么做,佛山市网站建设企业,asp网站上传前言本文主要是做一个Vue性能优化的帖子#xff0c;做一个参考文档#xff0c;对以后项目上线做一些集合文档。如果对各位在项目优化时#xff0c;做一个文档参照。开发过程在开发项目的时候#xff0c;就要注意项目的一些小技巧#xff0c;下面我就罗列一些经常用到的优化…  前言本文主要是做一个Vue性能优化的帖子做一个参考文档对以后项目上线做一些集合文档。如果对各位在项目优化时做一个文档参照。开发过程在开发项目的时候就要注意项目的一些小技巧下面我就罗列一些经常用到的优化的方法吧。同时老规矩查缺补漏。优先使用vIfvIf 和 vShow 理论上都是作用于元素的显示隐藏只是一个是直接对DOM一个是通过CSS的 display 来操作的在项目中大部分的时候我都是直接使用 vIf 直接代替使用 vShow 只有当DOM频繁进行显示和隐藏的时候但是这种场景非常少见我只在信息推送优先级中使用过项目中一直通过 WebSocket 推的消息进行消息的场景遇到过频繁推送不同类型的通知。vFor和vIf不要一起使用vFor 的优先级其实是比 vIF 高的所以当两个指令出现来一个DOM中那么 vFor 渲染的当前列表每一次都需要进行一次 vIf 的判断。而相应的列表也会重新变化这个看起来是非常不合理的。因此当你需要进行同步指令的时候。尽量使用计算属性先将 vIf 不需要的值先过滤掉。他看起像是下面这样的。// 计算属性computed: {  filterList: function () {  return this.showData.filter(function (data) {    return data.isShow })} // DOM  li v-foritem in filterList :keyitem.id {{ item.name }} liulvFor key避免使用index作为标识其实大家都知道 vFor 是不推荐使用 index 下标来作为 key 的值这是一个非常好理解的知识点可以从图中看到当index作为标识的时候插入一条数据的时候列表中它后面的key都发生了变化那么当前的 vFor 都会对key变化的 Element 重新渲染但是其实它们除了插入的 Element 数据都没有发生改变这就导致了没有必要的开销。所以尽量不要用index作为标识而去采用数据中的唯一值如 id 等字段。释放组件资源什么是资源? 每创建出一个事物都需要消耗资源资源不是凭空产生的是分配出来的。所以说当组件销毁后尽量把我们开辟出来的资源块给销毁掉比如 setInterval , addEventListener等如果你不去手动给释放掉那么它们依旧会占用一部分资源。这就导致了没有必要的资源浪费。多来几次后可以想象下资源占用率肯定是上升的。添加的事件created() {  addEventListener(click, Function, false)},beforeDestroy() {  removeEventListener(click, Function false)}定时器created() {  this.currentInterVal  setInterval(code,millisec,lang)},beforeDestroy() {  clearInterval(this.currentInterVal)}长列表项目当中会涉及到非常多的长列表场景区别于普通的分页来说大部分的前端在做这种 无限列表 的时候大部分新手前端都是通过一个 vFor 将数据遍历出来想的多一点的就是做一个分页。滚动到底部的时候就继续请求 API 。其实这也是未思考妥当的。随着数据的加载DOM会越来越多这样就导致了性能开销的问题产生了当页面上的DOM太多的时候难免给我的客户端造成一定的压力所以对于长列表渲染的时候建议将DOM移除掉类似于图片懒加载的模式只有出现在视图上的DOM才是重要的DOM。网络上有一些很好的解决方案如 vue-virtual-scroller 库等等大家可以理性的选择。图片合理的优化方式图片应该都不陌生吧在网页中往往存在大量的图片资源这些资源或大或小。当我们页面中DOM中存在大量的图片时难免不会碰到一些加载缓慢的问题导致图片出现加载失败的问题。网络上大部分都在使用 懒加载 的使用方式只有当 存在图片的DOM 出现在页面上才会进行图片的加载无形中起到了分流的作用下面就说一套实践的方案吧小图标使用 SVG 或者字体图标通过 base64 和 webp  的方式加载小型图片能通过cdn加速的大图尽量用cdn大部分框架都带有懒加载的图片不要嫌麻烦多花点时间使用它路由器按需加载对于路由的懒加载如果还不会的话那么就真该好好的重新去学习一下了。路由懒加载的方式有两种一种是require 另一种是 import 。当路由按需加载后那么Vue服务在第一次加载时的压力就能够相应的小一些不会出现 超长白屏P0问题 。下面是两种路由懒加载的写法// require法component: resolve(require([/components/HelloWorld],resolve))// importcomponent: ()  import(/components/HelloWorld)UI框架使用方式确保在使用UI框架如 Element  And Design 等UI框架的时候都使用官方给暴露出来的按需加载组件。只有真正用到它的时候时候才会加载当前UI框架的组件而不是一开始就将整个组件库给加载出来我们都知道一个UI框架其实很大相对比其他的东西来说。因此它在方便我们开发者的同时也无形中产生了多余的开销。但是项目周期开发的时候不得不依赖它。所以建议尽量的使用按需加载。合理的对项目进行止损如果你不在意非常嫌麻烦那么可以进行全局引入。import { Button } from xxxx首屏优化众所周知第一次打开Vue的时候如果你的项目够大那么首次加载资源时会非常的久。由于资源没有加载完毕界面的DOM也不会渲染会造成白屏的问题。用户此时并不知道是加载的问题所以会带来一个不好的体验。因此通常会在public下写一个加载动画告诉用户网页在加载中这个提示。当页面加载成功后页面渲染出来的这一个体验比白屏等开机要好太多了。因此推荐大家都设计一个自家公司的loading加载方式放入index.html中吧。项目过程最小化JS文件可以通过webpack处理打包的JavaScript文件让其更加的精简。在配置中你可以这么做config.optimization.minimize(true);图片资源压缩可以通过 image-webpack-loader 插件对打包的图片进行压缩看起来会对图片的加载有一些提升。如果担心破坏图片可以放弃使用它。“$ yarn add  image-webpack-loader- - QAQconfig.module  .rule(images)  .use(image-webpack-loader)  .loader(image-webpack-loader)  .options({ bypassOnDebug: true }) .end()打包公共代码在 webpack4 中可以通过 optimization.minimize 将公共代码进行打包虽然我个人认为这个东西对SPA应用来说效果其实有限但有胜于无文字再小也是肉不是所以说在细节的把控上永远是无止境的。但是在webpack4中也是将CommonsChunkPlugin 改用 SplitChunksPlugin 了。感觉评论掘友的提醒。new webpack.optimize.CommonsChunkPlugin({  name: [vendor,runtime],  filename: [xxxxx].js})删除沉淀代码使用 Tree-Shaking 插件可以将一些无用的沉淀泥沙代码给清理掉。依赖库CDN加速看到有小伙伴使用CDN的方式引入一些依赖包觉得非常的 Nice 然后我也开始使用了。我将 Vue Axios Echarts 等等都分离了出来在正式环境下通过CDN确实有了一些明显的提升所以说大家可以进行尝试。CDN LinkDI地址?BootCDN// 在html引入script标签后。在vue的配置中进行声明configureWebpack: {  externals: {    echarts: echarts // 配置使用CDN }}GZIP这个东西需要后端进行配置当然如果你有操作 Nginx 的权限的话那么可以自己开启反正我认为这个东西提升还是很大的。具体的可以看这篇文章。这里不过多赘述这个东西。?Vue CLI 23 下的项目优化实践 —— CDN  Gzip  Prerender后话项目优化是非常重要的一丝一毫的提升都是对用户的负责。本篇文章是对一个优化的小总结都是一些开发中需要注意的。如果真的想在优化中玩出花来其实非常难。需要具备很多全面的知识而不是看一两篇文章就能够说精通的。没有什么技术是随随便便就能掌握的除非它的价值很低。或者是属于必备项的一个东西。所以说性能优化还是需要大家在日常项目中养成好的编码习惯高内聚低耦合。避免无用代码。这些比任何后期的工作都要实在。如果你觉得这篇内容对你挺有启发邀请你帮我三个小忙点个「在看」让更多的人也能看到这篇内容欢迎关注我的5500star文章合集 https://github.com/ljianshu/Blog希望可以带给你点启发想进前端交流群一起探讨技术请在后台回复「1」或者加微信「frontJS」