学网站建设需要几年,上海货拉拉注册公司地址,营销策略ppt模板,比wordpress更好的diff算法介绍
diff算法是一种高效对比算法。diff算法在组件更新即响应式数据监控到数据的改变#xff0c;重新生成虚拟DOM树的时候调用#xff0c;然后通过diff算法计算出前后虚拟dom树的差异点#xff0c;更新dom时只更新变化的部分。
直接比较和修改两个数的复杂度为什么…diff算法介绍
diff算法是一种高效对比算法。diff算法在组件更新即响应式数据监控到数据的改变重新生成虚拟DOM树的时候调用然后通过diff算法计算出前后虚拟dom树的差异点更新dom时只更新变化的部分。
直接比较和修改两个数的复杂度为什么是n的3次方
老树的每一个节点都去遍历新树的节点直到找到新树对应的节点那么这个流程的时间复杂度就是O(n的平方)再紧接着找到不同之后再计算最短修改距离然后修改节点最后得出最终的复杂度为O(n的三次方)
diff算法存在的目的
当页面包含大量节点的时候如果使用暴力方法进行虚拟DOM对比更新那么就会依次执行极大数量的比较这是无法承受的所以需要diff这种高效对比算法进行优化。
diff的策略是什么有什么根据
1Web UI中DOM节点跨层级的移动操作特别少可以忽略不计因此仅进行同层比较。 2如果父节点不同放弃对子节点的比较直接删除旧节点然后添加新的节点重新渲染 3如果子节点有变化虚拟DOM不会计算变化的是什么而是重新渲染 4同级多个节点可通过唯一的key对比异同
diff流程是什么
新旧节点不同创建新节点——》更新父占位符节点——》删除旧节点 新旧节点相同且没有子节点不变。 新旧节点相同且都有子节点遍历子节点同级比较做移动添加删除三个操作 Vue3与Vue2的diff算法区别与优化
1编译模板时进行静态分析标记动态节点diff对比差异时仅对比动态节点相比Vue2性能提升明显 2通过对更新前后子节点数组建立映射表的方式将O(n的2次方)复杂度的遍历降低到O(n) 3, 使用最长递增序列优化对比流程可以最大程度的减少DOM的移动达到最少的DOM操作