mvvm
mvvm即Model-View-ViewModel,mvvm的设计原理是基于mvc的
MVC
MVVM
以数据双向绑定为核心,
数据变化 -> 视图更新;
视图交互变化(input) -> 数据model变更。
m指的是服务器后端的数据层封装
v指的是客户端视图层的封装
vm指的是数据层与视图层的数据绑定核心
mvvm实现了视图层与数据层的同步刷新
MVVM中vm过程
数据绑定实现了对数据层set与get的劫持与刷新操作关联
-
数据监听器Observer实现对数据属性的set/get的劫持,其中的Dep实现对set操作的消息广播数组的管理
利用Obeject.defineProperty()来监听属性变动,监听到变化之后实现消息订阅器Dep类,可以在Dep类中添加订阅者,数据变动触发notify,向订阅者传递消息,再调用订阅者的update方法。 -
指令解析器Compile,生成DOM,以及绑定相应的更新函数
-
订阅者Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图
- A. 在自身实例化时往属性订阅器 dep里面添加自己
- B. 自身必须有一个update()方法
- C. 待属性变动dep.notice()通知时,能调用自身的update()方法,并触发 Compile中绑定的回调,则功成身退。