1.什么是MVVM?
M:(Model,模型層) 數據模型 數據是后端ajax獲取到的
V :(View,視圖層)需要把數據展示到頁面的html中
VM:(ViewModel,視圖模型 V與M連接的橋梁) View和Model是通過ViewModel來進行關聯的
View改變了 通過DomListener 注冊事件 視圖改變了 數據就改變了
數據變化了 視圖根據DataBindings發生改變(也就是數據劫持)
MVVM實現了數據雙向綁定 (數據發生改變以后 VM會監測到數據的改變) 自動的通知我們的頁面
進行修改 視圖發生改變以后 同樣的數據也會發生改變
Vue做得事情就是視圖變 數據變 數據變 視圖變
2.幾種雙向數據綁定的方式?
1.發布-訂閱者模式(backbone.js) 最早的mvvm框架
一般通過pub、sub的方式來實現數據和視圖的綁定 使用起來比較麻煩
2.臟值檢查(angular.js)
用定時器輪訓檢測數據是否發生改變 性能低
3.(vue用什么方式實現的數據綁定?)
數據劫持 Object.defineProperty給對象的屬性增加修飾符來劫持各個屬性的setter getter(獲取值和設置值的時候 你都能知道
然后就可以修改頁面的視圖了) 此外還結合了發布訂閱模式 把所有訂閱 指定 統一做更新的處理
IE8以下不支持 Object.defineProperty這個屬性的 所以vue只兼容到ie9