我正在考虑使用HTML5数据属性来简化我的应用程序的第三方脚本。所以,考虑两种情况:
<div>Sticker</div>
。<div data-id="{{id}}" data-category="{{category-id}}">Sticker</div>
。第二种情况(存在attrs)可能会影响DOM /渲染性能,不是吗?如果是这样,多少钱?
为了澄清,我不打算单独使用数据属性,只是将它们暴露给第三方脚本或浏览器插件。考虑dotjs左右。使用数据属性,可以非常轻松地抓取/抓取页面。
答案 0 :(得分:15)
这个原因的主要因素是解析HTML。这一时间被捕获并显示在Chrome DevTools时间轴中,但在很棒的方案中,它非常小。
数据属性不会影响renderTree,因此对Layout和Paint的影响为零。 querySelector('div')
表现也不会受到影响。这个可能具有什么性能影响只是你在DOM中存储真相,所以你将使用DOM操作来读取值。抓取一个元素来读取数据(使用elem.dataset
)将总是比从DOM上没有的结构中获取数据要慢。因此,您可以使用CPU分析器或时间轴来确定应用程序内操作的执行开销。真的取决于多少和多少次。
TL; DR:对渲染/滚动没有影响。对页面加载时间的极小影响。对运行时性能的影响很小。
使用Chrome DevTools时间轴可以衡量所有这些因素。
答案 1 :(得分:2)
对于数据属性,有两篇有趣的文章需要阅读:
1- https://hacks.mozilla.org/2012/10/using-data-attributes-in-javascript-and-css/
2- http://html5doctor.com/html5-custom-data-attributes/
所以,在我看来,如果你对变量名称有所了解,如果你不关心IE中的一些问题(可能只有IE7&lt;,因为我认为9和8数据attr会起作用),使用数据attributs将是一个很好的解决方案。 关于性能,您可以尝试上面的链接并查看差异,但我认为将值存储在Javascript变量中的一致数据结构中更为合适。