项目优化1

关于vue的性能优化,在这里做一个整理,为以后做参考。

1.优先使用v-if

   v-if和v-show理论上都是作用于元素的显示隐藏,v-if作用于DOM,v-show是通过CSS的display来操作的,在项目中大部分尽量直接使用v-if,只有DOM操作频繁显示和隐藏时使用v-show。

2.v-if和v-for不要一起使用

  优先级:v-for 大于 v-if

  当两个指令出现在一个DOM中时,v-for渲染的列表每一个都要进行一次v-if判断,而相应的列表也会重新变化。因此当需要同时使用这两个指令时,尽量使用计算属性,先将v-if不需要的值先过滤掉。

// 计算属性
computed: {
  filterList: function () {
  return this.showData.filter(function (data) {
    return data.isShow
  })
}
  
// DOM
  
<ul>
  <li v-for="item in filterList" :key="item.id">
  {{ item.name }}
  </li>
</ul>

3.v-for  key避免使用index作为标识

  v-for不推荐使用index下标作为key的值。

  如下图,当index作为标识时,插入一条数据时,列表中插入的后面的值就都发生了变化,然后当前的v-for都会对key变化的数据重新渲染,但是但是其实除了插入的数据都没有发生变化,这就导致了不必要的开销。所以,尽量不要使用index作为标识,而是采用数据中的唯一的值,如id等字段。

 

4.删除沉淀代码

使用 Tree-Shaking 插件可以将一些无用的沉淀泥沙代码给清理掉。

 5.释放组件资源

什么是资源? 每创建出一个事物都需要消耗资源,资源不是凭空产生的,是分配出来的。所以说,当组件销毁后,尽量把我们开辟出来的资源块给销毁掉,比如 setInterval , addEventListener等,如果你不去手动给释放掉,那么它们依旧会占用一部分资源。这就导致了没有必要的资源浪费。多来几次后,可以想象下资源占用率肯定是上升的。

添加的事件

created() {
  addEventListener('click', Function, false)
},
beforeDestroy() {
  removeEventListener('click', Function false)
}

定时器

created() {
  this.currentInterVal = setInterval(code,millisec,lang)
},
beforeDestroy() {
  clearInterval(this.currentInterVal)
}

6.路由器按需加载

路由懒加载的方式有两种,一种是require 另一种是 import 。当路由按需加载后,那么Vue服务在第一次加载时的压力就能够相应的小一些,不会出现 超长白屏P0问题 。下面是两种路由懒加载的写法:

// require法
component: resolve=>(require(['@/components/HelloWorld'],resolve))

// import
component: () => import('@/components/HelloWorld')
posted @ 2020-10-10 15:53  小那  阅读(116)  评论(0编辑  收藏  举报