猿问

virtual dom在哪些情况下会快于直接操作dom?

找了篇比较易懂的virtual dom实现讲解的文章(https://github.com/livoras/blog/issues/13),这个实现大致是https://github.com/Matt-Esch/virtual-dom的一个简化版本。

文中把dom树种遇到的差异分为四种:

  1. 整个标签替换(标签名都不一样,只能全部换掉)

  2. 重定位(两个同级children比较,发现有共同点,通过一个最小编辑算法生成一个包含增,删和移动位置的patch。)

  3. 标签属性

  4. 标签内的文本内容

1,3,4都很简单,2复杂一点。

问题是最终应用patch的时候也是直接操作dom,这种把所有差异存起来然后一起应用比起传统依次操作dom的优势在哪里?

我再简化下问题:譬如当前Patch中只包含多个节点的属性变化差异,这种情况比起传统的依次操作这些节点改变属性有优势吗?如果有,是否只是避免了重复遍历dom树来找到想要操作的dom的步骤?


ITMISS
浏览 724回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答