virtualDOM 之所以号称高性能,其实现原理就与此类似 。
缓存元素集合
比如将通过选择器函数获取到的 DOM 元素赋值给变量,之后通过变量操作而不是再次使用选择器函数来获取 。
下面举例说明,假设我们现在要将上面代码所创建的 1 万个 div 元素的文本内容进行修改 。每次重复使用获取选择器函数来获取元素,代码以及时间消耗如下所示 。
for (let i = 0; i < document.querySelectorAll('div').length; i++) {document.querySelectorAll(`div`)[i].innerText = i}
如果能够将元素集合赋值给 JavaScript 变量,每次通过变量去修改元素,那么性能将会得到不小的提升 。
const divs = document.querySelectorAll('div')for (let i = 0; i < divs.length; i++) {divs[i].innerText = i}
对比两者耗时占比图可以看到,两者的渲染时间较为接近 。但缓存元素的方式在黄色的 Scripting 耗时上具有明显优势 。
总结
本课时从深入理解 DOM 的必要性说起,然后分析了 DOM 操作耗时的原因,最后再针对这些原因提出了可行的解决方法 。
除了这些方法之外,还有一些原则也可能帮助我们提升渲染性能,比如:
尽量不要使用复杂的匹配规则和复杂的样式,从而减少渲染引擎计算样式规则生成 CSSOM 树的时间;
尽量减少重排和重绘影响的区域;
使用 CSS3 特性来实现动画效果 。
希望你首先能理解原因,然后记住这些方法和原则,编写出高性能代码 。
最后布置一道思考题:说一说你还知道哪些提升渲染速度的方法和原则?
【如何高效操作 DOM 元素?】
推荐阅读
- 淘宝开店怎么运营有什么技巧 淘宝新店铺如何运营
- 如何优化淘宝店铺宝贝的标题关键词? 如何优化淘宝标题
- 如何正确下载CentOS各个版本镜像
- 安装系统疑问:UEFI和Legacy到底如何选择?
- Python 如何传递运算表达式?
- 教你如何用android mvp分层架构优雅写代码
- 新手如何运营淘宝网店 淘宝新店铺如何运营
- 淘宝怎样优化关键词 淘宝如何提升关键词排名
- 杜仲茶是什么茶,杜仲茶的春茶和秋茶如何选择
- 怎么入驻淘宝 淘宝服务商怎么入驻