### 一、 什么是虚拟dom
Vdom因为是纯粹的JS对象所以操作他很高效,但是vdom的变更最终会装换成DOM的操作,为了实现高效的DOM操作,一套高效的虚拟DOM diff
Diff算法
1. 原理
处理头部的同类型节点, 标记为已处理的节点
处理尾部的同类型节点
处理头部/尾头同类型的节点
处理新增的节点
处理更新的节点
1.循环
2.循环后处理
处理需删除的节点、
Diff分两部分
1. 第一部分是一个循环,循环内部是一个分支逻辑,每次循环只会进入其中的一个分支,每次循环会处理一个节点,处理之后将节点标记为已处理(oldVdom和newVdom都要进行标记,如果节点只出现在其中某一个vdom中,则另一个vdom中不需要进行标记),标记的方法有2种,当节点正好在vdom的指针处,移动指针将它排除到未处理列表之外即可,否则就要采用其他方法,Vue的做法是将节点设置为undefined。
2. 循环结束之后,可能newVdom或者oldVdom中还有未处理的节点,如果是newVdom中有未处理节点,则这些节点是新增节点,做新增处理。如果是oldVdom中有这类节点,则这些是需要删除的节点,相应在DOM树中删除之