vue采用同層節(jié)點比較,從最外面一級,依次向下對比。
下圖中,左邊為原始節(jié)點結構,右側為虛擬DOM更新后的節(jié)點結構。
一、移動節(jié)點(同級下,各節(jié)點使用不同標簽)

可能是把B節(jié)點直接移動到D后面,也可能是把D移動到B前面,再把C移動到B前面。
二、刪除新建(一)(同級下,各節(jié)點使用不同標簽)

同時刪除C節(jié)點和其下的E、F子節(jié)點,然后在B節(jié)點下面分別新建C節(jié)點和E、F節(jié)點
三、刪除新建(二)(同級下,各節(jié)點使用不同標簽)

在比對過程中,發(fā)現C節(jié)點不存在了,就會把C節(jié)點,連帶E、F一并刪除,然后新建G節(jié)點和E、F節(jié)點。
四、更新刪除新建(無key)(同級下,各節(jié)點使用相同標簽)

B1和B2調換順序,先刪除B2下面的E、F,后再新建E、F節(jié)點。比較浪費資源,不能很好的復用節(jié)點。
五、移動(有key)(同級下,各節(jié)點使用相同標簽)

每個節(jié)點都有了key這個唯一的標識符,會被判定每個節(jié)點都是唯一的,直接移動節(jié)點即可。
六、插入(有key)(同級下,各節(jié)點使用相同標簽)

如果沒有key,就會是:B2 => B4, B3=>B2, 新建B3;
如果有key,直接在B2前面插入B4。