调用patch函数打补丁,通过传入新旧节点来判断是否是同一节点,是同一节点的话就调用patchVnode来处理,不是同一节点的话就直接移除旧节点,更新新的节点<br>
当我们确定两个节点值得比较之后我们会对两个节点指定 patchVnode 方法,patchVnode函数也是传入新旧节点,判断几种情况,1:新旧节点都是文本节点,但是文本不同,更换新节点的文本,2:新节点有子节点,旧节点没有子节点, 直接替换为新节点 3:旧节点有子节点,新节点没有,把旧节点更新到新节点上 4:新旧节点都有子节点调用updateChildren方法<br>
UpdateChuldren方法,将 Vnode 的子节点 Vch 和 oldVnode 的子节点 oldCh 提取出来<br>oldCh 和 vCh 各有两个头尾的变量 StartIdx 和 EndIdx ,它们的2个变量相互比较,一共有4种比较方式。如果4种比较都没匹配,如果设置了 key ,就会用 key 进行比较,在比较的过程中,变量会往中间靠,一旦 StartIdx>EndIdx 表明 oldCh 和 vCh 至少有一个已经遍历完了,就会结束比较。