發佈-訂閱模式又稱爲 觀察者模式,它定義 對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,全部依賴於它的對象都將獲得通知
Ajax:
$.ajax('xxxx', function(data){
initData(data)
animate(data)
// ....
})
這種寫法耦合性太高,對操做的增刪改查必須在內部進行
以發佈-訂閱模式的思想修改寫法:
$.ajax('xxxx',function(data){
// 假設obj爲發佈訂閱模式中的發佈者,trigger爲發佈行爲
obj.trigger('success', data)})
// listen爲訂閱,當發佈了success,全部訂閱了success的行爲將執行
obj.listen('success', function(data){
// toDo
})複製代碼
經過發佈訂閱的形式改寫後,代碼耦合度大大減低,雖然在代碼量上沒有減小,但變得更加直觀
javascript
需求分析:前端
Vue.Js採用數據劫持的方式結合發佈訂閱模式,經過Object.defineProperty()
來劫持各個屬性的getter
和setter
,在數據變更時發佈消息給各個訂閱者,觸發相應的監聽回調
Vue.js
響應式原理