1.什麼是MVVM?html
M:(Model,模型層) 數據模型 數據是後端ajax獲取到的vue
V :(View,視圖層)須要把數據展現到頁面的html中 ajax
VM:(ViewModel,視圖模型 V與M鏈接的橋樑) View和Model是經過ViewModel來進行關聯的後端
View改變了 經過DomListener 註冊事件 視圖改變了 數據就改變了框架
數據變化了 視圖根據DataBindings發生改變(也就是數據劫持)mvvm
MVVM實現了數據雙向綁定 (數據發生改變之後 VM會監測到數據的改變) 自動的通知咱們的頁面性能
進行修改 視圖發生改變之後 一樣的數據也會發生改變spa
Vue作得事情就是視圖變 數據變 數據變 視圖變雙向綁定
2.幾種雙向數據綁定的方式?htm
1.發佈-訂閱者模式(backbone.js) 最先的mvvm框架
通常經過pub、sub的方式來實現數據和視圖的綁定 使用起來比較麻煩
2.髒值檢查(angular.js)
用定時器輪訓檢測數據是否發生改變 性能低
3.(vue用什麼方式實現的數據綁定?)
數據劫持 Object.defineProperty給對象的屬性增長修飾符來劫持各個屬性的setter getter(獲取值和設置值的時候 你都能知道
而後就能夠修改頁面的視圖了) 此外還結合了發佈訂閱模式 把全部訂閱 指定 統一作更新的處理
IE8如下不支持 Object.defineProperty這個屬性的 因此vue只兼容到ie9