### 一、 什么是虛擬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樹中刪除之