diff算法流程
2025-04-23 17:49:44 0 举报
diif算法流程
作者其他创作
大纲/内容
无
patch函数:判断新旧虚拟dom是不是同一节点,如果是,则调用patchVode进行多情况比较,否则直接替换
patchVnode:主要是当新旧节点是同一个节点但是不是同一个对象的情况
是
主要内容
否
newVnode和oldVnode是不是同一个节点
sameVnode:通过判断选择器和key来证明newVnode和oldVnode是不是同一个节点
oldVnode里面有children吗
1.清空oldVnode里面的文本2.创建newVnode的dom,将子节点添加到dom中(调用createElement)
newVnode中的text和oldVnode里面的text是否相同
循环结束条件(新前>=新后&&旧前>=旧后)需要使用四指针查找法1.新前和旧前2.新后和旧后3.新后和旧前4.新前和旧后如果老节点先循环结束,没有循环完的newVnode子节点直接插入在oldVnode后边,此为新增如果新节点循环结束,没有循环完的oldVnode子节点直接删除,此为删除(旧前和新后中间的节点就是被删除的节点)当新前和旧后比较的时候,这时候要移动节点,移动新前指向的节点到老节点的旧前之前当新后和旧前比较的时候,要移动新后所指向的节点到到老节点的旧后之后如果这四种情况都不存在,就会for循环查找老节点,找到之后,把老节点的子节点变成unfind然后移动新节点所在位置到老节点的旧前之前,如果没找到就会该指针节点插入老节点的旧前之前
newVnode中是不是有text
有
将oldVnode.elm.innitext = newVnode.text(调用createElement)
否,但是newVnode是有children的
无操作不需要更新
oldVnode和newVnode是不是同一个对象
0 条评论
下一页
为你推荐
查看更多