代码性能问题

  1. 在基于vue的项目中,如果某个数据更改引起大面积或频繁的vuex相关的变动,会非常影响性能。举例:在一个关系图组件中,数据格式是{nodes:[],links:[]},nodes数组很大,在组件内部会频繁修改nodes数组中元素的属性,组件外如果监控nodes并跟vuex绑定,会导致节点(nodes元素)在界面上拖动的时候非常卡顿,因为每次属性的修改(往往是批量修改),都会引起vuex的变动。
  2. 由于浏览器会把批量的dom改动集中一次性处理,所以dom的读写操作不要写在一起,因为读操作极可能会触发写操作的执行。
  3. 层级越高的dom的样式修改,影响越大(看重排、重绘)。
  4. 通过class name或style.cssText的方式批量修改样式。
  5. 通过document fragment或者cloneNode的方式修改dom样式。
  6. 先将display设置为none,多次dom操作后,再恢复display。
  7. visibility:hidden不会影响重排。
  8. 通过类似vue或react中的虚拟dom技术最大程度减少dom操作。
  9. 将dom的写操作放在requestAnimationFrame中。
  10. 将dom操作放在requestIdleCallback中,也即放在在每一帧空闲时间里操作。
  11. dom中css、js加载的影响:再谈 load 与 DOMContentLoaded
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,963评论 1 45
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,006评论 0 25
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 13,259评论 1 52
  • VUE介绍 Vue的特点构建用户界面,只关注View层简单易学,简洁、轻量、快速渐进式框架 框架VS库库,是一封装...
    多多酱_DuoDuo_阅读 7,666评论 1 17
  • Vue也已经升级到2.0版本了,到现在为止(2016/11/19)比较流行的MVVM框架有AngularJS(也有...
    彬_仔阅读 27,301评论 12 114