DOM-Diff 算法的作用就是对比VNode节点的不同来进行更新dom
在Vue
中,把 DOM-Diff
过程叫做patch
过程。
主要是做三件事
- 创建节点:新的
VNode
中有而旧的oldVNode
中没有,就在旧的oldVNode
中创建。 - 删除节点:新的
VNode
中没有而旧的oldVNode
中有,就从旧的oldVNode
中删除。 - 更新节点:新的
VNode
和旧的oldVNode
中都有,就以新的VNode
为准,更新旧的oldVNode
。
(1)创建节点
(2)删除节点
只需要节点父节点调用removeChild()方法
function removeNode (el) {
const parent = nodeOps.parentNode(el) // 获取父节点
if (isDef(parent)) {
nodeOps.removeChild(parent, el) // 调用父节点的removeChild方法
}
}
3、更新节点
静态节点的定义 只有纯文字没有任何其他元素的节点