找了篇比較易懂的virtual dom實現講解的文章(https://github.com/livoras/blog/issues/13),這個實現大致是https://github.com/Matt-Esch/virtual-dom的一個簡化版本。文中把dom樹種遇到的差異分為四種:整個標簽替換(標簽名都不一樣,只能全部換掉)重定位(兩個同級children比較,發現有共同點,通過一個最小編輯算法生成一個包含增,刪和移動位置的patch。)標簽屬性標簽內的文本內容1,3,4都很簡單,2復雜一點。問題是最終應用patch的時候也是直接操作dom,這種把所有差異存起來然后一起應用比起傳統依次操作dom的優勢在哪里?我再簡化下問題:譬如當前Patch中只包含多個節點的屬性變化差異,這種情況比起傳統的依次操作這些節點改變屬性有優勢嗎?如果有,是否只是避免了重復遍歷dom樹來找到想要操作的dom的步驟?
virtual dom在哪些情況下會快于直接操作dom?
ITMISS
2018-08-06 10:09:57