找了篇比较易懂的virtual dom实现讲解的文章(https://github.com/livoras/blog/issues/13),这个实现大致是https://github.com/Matt-Esch/virtual-dom的一个简化版本。文中把dom树种遇到的差异分为四种:整个标签替换(标签名都不一样,只能全部换掉)重定位(两个同级children比较,发现有共同点,通过一个最小编辑算法生成一个包含增,删和移动位置的patch。)标签属性标签内的文本内容1,3,4都很简单,2复杂一点。问题是最终应用patch的时候也是直接操作dom,这种把所有差异存起来然后一起应用比起传统依次操作dom的优势在哪里?我再简化下问题:譬如当前Patch中只包含多个节点的属性变化差异,这种情况比起传统的依次操作这些节点改变属性有优势吗?如果有,是否只是避免了重复遍历dom树来找到想要操作的dom的步骤?
添加回答
举报
0/150
提交
取消