美文网首页
记一次关于vue性能问题

记一次关于vue性能问题

作者: A豆_b99d | 来源:发表于2018-11-23 18:29 被阅读0次

当时开发项目的时候,涉及到一个操作列表(不是单纯展示的列表,里面包含很多操作功能)的功能。把列表的每个小item写成一个子组件,当时写子组件没有考虑到数据量的问题。所以在写子组件,并没有做什么优化,而且里面还加了form表单校验,里面还有很多事件处理,样式处理等等复杂的逻辑。

注意:

  1. 首先需要从设计上面来说简化功能(弱化这种列表的功能,省去没有必要的功能,比如说表单校验。这样可以在提交的时候,循环数据判断,虽然这种方式也存在弊端)

  2. 然后,看下哪些部分可以在稍后渲染,或者直接先不渲染,在需要的时候再渲染。展示必要信息,不需要的信息可以稍后渲染。

  3. 数据量很大的时候:

    • 简单的查看,不需要操作。使用滚动事件,注意一个问题:如果完全渲染完成了,需要把事件移除。避免消耗性能

        // 鼠标滚动的时候,可以默认加载
        // 这种方式对于数据量超大的,比如说1000条+,可能会生成超多的标签,如果需要操作的时候,页面会超级卡顿
        // 很多操作都没法进行,但是查看功能还是可以进行的
        const scrollTop = document.documentElement.scrollTop
        let clientHeight = document.documentElement.clientHeight
        const bodyHeight = document.body.scrollHeight // body的总高度
        if ((bodyHeight - scrollTop) <= 2 * clientHeight) {
          this.rulesList = this.rulesList.concat(this.arrRulesList.slice((this.concatIndex - 1) * this.defaultShowNum, this.defaultShowNum * this.concatIndex++))
        }
        window.addEventListener('scroll', this.windowScroll)
        window.removeEventListener('scroll', this.windowScroll)
      
    • 使用定时器,同样渲染完成了,清除定时器。可能一次渲染多个,页面会存在卡顿的效果,可以使用先渲染一部分,后面的部分一次渲染少一些,这样就不会存在卡顿效果,无法操作其他的内容

  4. 上面这些方法如果对于数据量很大的话,其实都不好用。但是可以考虑腾讯部落使用的方法,一个页面有4000+条数据,如果只是单单渲染也会很消耗性能。他们使用的处理方式是,页面总共只有40个li元素,上滑下滑,都是相应的使用上面和下面的li元素定位的,并且把内容修改掉。

(如果下次遇到这种列表的问题,需要考虑到)

相关文章

  • 记一次关于vue性能问题

    当时开发项目的时候,涉及到一个操作列表(不是单纯展示的列表,里面包含很多操作功能)的功能。把列表的每个小item写...

  • Vue的性能优化

    定位应用的性能问题 Vue应用的性能问题可以分为两个部分:运行时性能问题,加载性能问题。和其他 web应用一样,定...

  • vue 图片 显示方案

    相信有些刚入手vue的小白来说 vue 中有许多的问题 我也是刚入手vue 就简单记一记 vue图片展示的问题 v...

  • 记一次Alexa网络性能优化

    记一次网络性能优化 基于Alexa的功能认证时,遇到了PTS(Push to Stream Delay)的问题,看...

  • 复习3

    vue路由懒加载 1.vue路由懒加载解决的什么 问题:解决打包后文件过大的问题,从而优化页面加载,提升性能 注意...

  • Vue笔记六:Vue项目的性能优化之路

    Vue笔记六:Vue项目的性能优化之路 我最近也经常面试外包同事。面试的时候,总会有个问题,“你说一下性能优化的手...

  • Vue Router 试探

    在这篇记一次VUE开发环境搭建文章中我记录了一些Vue开发环境搭建的东西,最近接触了一些关于Router的内容,在...

  • 记一次HDFS性能问题排查

    问题表现 HDFS刚上线没有任何问题。就最近现网读写HDFS时,阶段性比较慢,也不是一直都比较慢,慢的时候读取一次...

  • 记一次系统性能问题

    问题:某个业务需要查询列表,持久层使用了mybatis。查询列表用了26s,但是看日志把相关sql 在navica...

  • threeJs--vue 性能问题

    这两年大家使用threejs做项目是越来越多了,为了更方面使用three引擎以及照顾前端开发工程师的情绪,大家都喜...

网友评论

      本文标题:记一次关于vue性能问题

      本文链接:https://www.haomeiwen.com/subject/axhsqqtx.html