发布-订阅模式又称为 观察者模式,它定义 对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都将获得通知
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
响应式原理