zoukankan      html  css  js  c++  java
  • 项目优化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')
  • 相关阅读:
    数数小木块
    Triangular Sums
    Financial Management
    阶乘因式分解(一)
    另一种阶乘问题
    韩信点兵
    Fibonacci数
    A+B Problem
    16进制的简单运算
    浅谈数据库之事务
  • 原文地址:https://www.cnblogs.com/meiyanstar/p/13793072.html
Copyright © 2011-2022 走看看