寫(xiě)在開(kāi)頭

關(guān)于Angular臟檢查,之前沒(méi)有仔細(xì)學(xué)習(xí),只是旁聽(tīng)道說(shuō),Angular 會(huì)定時(shí)的進(jìn)行周期性數(shù)據(jù)檢查,將前臺(tái)和后臺(tái)數(shù)據(jù)進(jìn)行比較,所以非常損耗性能。

這是大錯(cuò)而特錯(cuò)的。我甚至在新浪前端面試的時(shí)候胡說(shuō)一通,現(xiàn)在想來(lái)真是羞愧難當(dāng)! 沒(méi)有深入了解就信口開(kāi)河實(shí)在難堪大任。

最后被拒也是理所當(dāng)然。

在剖析之前,非常感謝坐鎮(zhèn)蘇寧的徐飛,現(xiàn)在已經(jīng)不在蘇寧了,我也是在他翻譯的文章(Build Your own AngularJS)和博客才略懂一二。
徐飛關(guān)于知乎問(wèn)題國(guó)內(nèi)前端團(tuán)隊(duì)分布和前景是怎樣的?的回答也是特別有意思。

誤區(qū)糾正

首先糾正誤區(qū),Angular并不是周期性觸發(fā)藏檢查。
只有當(dāng)UI事件,ajax請(qǐng)求或者 timeout 延遲事件,才會(huì)觸發(fā)臟檢查。
為什么叫臟檢查? 對(duì)臟數(shù)據(jù)的檢查就是臟檢查,比較UI和后臺(tái)的數(shù)據(jù)是否一致!
下面解釋:

$watch 對(duì)象。

Angular 每一個(gè)綁定到UI的數(shù)