? ? ? vue2和vue3diff算法和響應原理區(qū)別:
? ? ? 1.響應原理的不同
? ? ? v2中使用的是object.defineproprety劫持數(shù)據(jù)的set焙蹭、get方法來實現(xiàn)對數(shù)據(jù)的監(jiān)聽,但是無法監(jiān)聽數(shù)組的變化vue3用的是proxy攔截對象操作實現(xiàn)數(shù)據(jù)監(jiān)聽和更新泡一,可監(jiān)聽到數(shù)組的變換?
? ? ? 2.diff算法優(yōu)化
? ? ? Vue2使用的是雙向比較算法(雙指針算法)充尉,即通過對比新舊VNode樹的節(jié)點熊楼,找到需要更新的節(jié)點進行更新斗忌。這個算法的時間復雜度是O(n)。
? ? ? Vue3使用的是靜態(tài)標記算法(靜態(tài)標記+動態(tài)對比算法)市栗,即在編譯階段對模板進行靜態(tài)標記肋坚,將模板中的靜態(tài)節(jié)點進行標記,然后在更新階段只對比動態(tài)節(jié)點肃廓,從而減少了比較的節(jié)點數(shù)量,提高了性能诲泌。