-
虛擬DOM是什么桦沉?
- 一個(gè)虛擬DOM(元素)是一個(gè)一般的js對象,準(zhǔn)備的說是一個(gè)對象樹(倒立的)
- 虛擬DOM保存了真實(shí)DOM的層次關(guān)系和一些基本屬性劲弦,與真實(shí)DOM一一對應(yīng)
- 如果只是更新虛擬DOM,頁面是不會重繪的
-
Virtual DOM 算法的基本步驟
- 用 JavaScript對象結(jié)構(gòu)表示DOM樹的結(jié)構(gòu);然后用這個(gè)樹構(gòu)建一個(gè)真正的DOM的樹趋惨,插到文檔當(dāng)中。
- 當(dāng)狀態(tài)變更的時(shí)候惦蚊,重新構(gòu)造一棵樹的對象器虾。然后用新的樹和舊的書進(jìn)行比較,記錄兩棵樹差異蹦锋。
- 把2中記錄的差異應(yīng)用到步驟1所構(gòu)造的真正的DOM樹上兆沙,視圖就更新了
進(jìn)一步理解
- Virtual DOM本質(zhì)上就是在JS和DOM之間做了一個(gè)緩存。
- 可以類比CPU和硬盤莉掂,既然硬盤這么慢葛圃,我們就在它們之間加一個(gè)緩存:既然DOM這么慢,我們就在它們js和dom之間加個(gè)緩存憎妙,cpu(js)只操作內(nèi)存(virtual dom)库正,最后的時(shí)候再把變更寫入硬盤(dom)。