vue 虚拟节点diff过程
2021-03-05 16:42:23 5 举报
vue 虚拟节点diff过程
作者其他创作
大纲/内容
那就将这个dom变成虚拟节点
跟传入进来的参数二是不是同一个节点
是同一个节点
如果经过上面四轮的比较如果还有没有匹配的项
进行精细化比较
文本节点跟旧的节点的文本是不是一样
暴力删除旧的节点,插入新的节点
插入项要插入到新后+1指向的那个项的前面newCh[newEndIndex + 1].elm;
不是
是虚拟节点
(如果是新后旧前命中,那么旧要移动节点,将旧前指向的项移动到旧后之后
是
新老节点都有children,此时旧要进行diff算法进行子节点更新操作:diff算法提供四种命中方式:1、新前与旧前比较2、新后与旧后比较3、新后与旧前比较4、新前与旧后比较
否
如果是旧节点先循环完毕,就说明有新的节点要插入项
删除是删除旧前跟旧后之间的所有项
如果是新前旧后命中,那么就要移动节点,移动旧后指向的这个节点到旧前指向节点的前面
调用patch函数
判断一下第一个参数是不是虚拟节点
旧的节点是否有文本节点
将旧节点中的文本清空,然后将新的节点添加到到DOM节点中
什么都不做
新的节点是不是有文本节点
将新节点的文本innerText到dom节点中
如果是新的节点先循环完毕,就说明旧的节点有要删除的项
不是同一个节点
收藏
0 条评论
下一页