vue.js是什么
vue.js是一套用于構(gòu)建用戶界面的漸進式框架佣赖,vue采用自底而上的增量開發(fā)設(shè)計。
vue的目標是通過盡可能簡單的API實現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合視圖組件。
他提供了現(xiàn)代開發(fā)常用的高級功能:
解耦視圖和數(shù)據(jù)
可復(fù)用的組件
前端路由
狀態(tài)管理
虛擬dom (Virtual DOM)
MVVM模式
MVVM (Model - View - ViewModel)模式由MVC模式衍生而來诗宣,當View發(fā)生變化時會自動更新到ViewModel,ViewModel發(fā)生變化時會更新View想诅,View與ViewModel通過雙向綁定建立聯(lián)系:
MVVM實現(xiàn)做法
發(fā)布-訂閱者模式(backbone.js)
一般通過sub, pub的方式實現(xiàn)數(shù)據(jù)和視圖的綁定監(jiān)聽召庞,更新數(shù)據(jù)方式通常做法是 vm.set('property', value)-
臟值檢查(angular.js)
angular.js 是通過臟值檢測的方式比對數(shù)據(jù)是否有變更,來決定是否更新視圖来破,最簡單的方式就是通過 setInterval() 定時輪詢檢測數(shù)據(jù)變動篮灼,angular只有在指定的事件觸發(fā)時進入臟值檢測- DOM事件
- XHR響應(yīng)事件
- 瀏覽器Location變更事件
- Timer事件(timeout , interval )
- 執(zhí)行 digest()或 apply()
-
數(shù)據(jù)劫持: vue.js
采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter徘禁,getter诅诱,在數(shù)據(jù)變動時發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)送朱。
引用此文章
Vue MVVM原理