1.數據綁定vue
1)vuereact
把一個普通對象傳給Vued的data選項,Vue會遍歷此對象的全部屬性,並使用Object.defineProperty將這些屬性所有轉爲getter/setter。Object.defineProperty爲ES5的新屬性,沒法模仿,因此vue不支持IE8以及更低版本瀏覽器的緣由。用戶看不到getter和setter可是vue內部作了追蹤依賴,在屬性被訪問和修改時通知變化。每一個組件都有一個watcher對象,他會在組件渲染的過程當中把屬性記錄爲依賴,以後當該屬性的setter被調用時,會通知watcher從新計算,從而致使它關聯的組件得以更新。瀏覽器
vue異步執行dom更新,只要觀察到屬性變化,Vue將會開啓一個隊列,並緩衝在同一時間循環中發生的全部數據改變。若是同一個watcher被觸發屢次,只會推入一次。而後在下一個事件循環tick中,刷新隊列並執行實際工做。Vue.nextTick(callback)能夠在下一次dom更新完後直接調用數據結構
2)react框架
當某個組件的狀態發生改變時,會以該組件爲根。從新渲染整個組件樹。單向數據流dom
3)angular 異步
在每一次像ui中綁定東西時都會往$watch隊列中插入一條新的$watch,監視着model的改變。當模板加載完畢時,angular會找到每個directive而後生成須要的$watch。當用戶觸發能夠被angular context處理的事件時,digest循環就會被觸發,digest循環會遍歷全部的watch,而後詢問是否有屬性和值的變化,直到全部的watch都被檢查過。若是至少有一個watch發生改變就會再次觸發digest循環,直到全部watch都不會改變。爲了防止無限循環,當循環超過十次就會拋出異常,就會拋出異常。當$digest循環結束時,DOM相應會變化編輯器
2.視圖渲染ui
1)vuespa
vue.js不使用Virtual DOM而是使用真實的DOM做爲模板,數據綁定在真實的模板上,使用依賴追蹤動了多少東西改變多少東西。
2)react
react的渲染創建在Vitual DOM上(在內存中描述DOM樹的數據結構)。當狀態發生改變時,React會從新渲染Virtual DOM,在計算後給真實DOM打補丁。它不使用數據觀察機制,每次更新都會從新渲染整個應用。在超大量數據的首屏渲染速度上有必定優點。由於Vue的渲染啓動時作的比較多。
3)angular
angular1的原理是:HTML模板將會被瀏覽器解析到DOM中,DOM結構成爲Angular編輯器的輸入。angular將會遍歷DOM模板,來生成相應的ng指令,全部的指令都負責針對view來設置數據綁定。所以。NG框架是在DOM加載完成後纔開始起做用的。