vue采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty劫持data属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
MVVM
M - Model ,Model代表数据模型,也可以在Model中定义数据,修改和操作业务逻辑。
V - View ,View代表UI组件,它负责经数据模型转为UI展现出来。
VM - ViewModel ,ViewModel监听模型数据的改变和控制视图行为(UI)、处理用户交互,简单理解就是一个同步View和Model的对象,链接Model和VIew。
- View接受用户交互请求。
- View将请求转交给ViewModel。
- ViewModel操作Model数据更新。
- Model更新完数据,通知ViewModel数据发生变化。
- ViewModel更新View数据。
MVC
- View接受用户交互请求。
- View将请求转交给Controller处理。
- Controller操作Model进行数据更新保存。
- 数据更新保存之后,Model会通知View更新
- View更新变化数据,使用户得到反馈。
MVVM与MVC之间的不同点
- ViewModel代替了Controller,在UI层之上。
- ViewModel向View暴露他所需要的数据和指令对象。
- ViewModel接受来自Model的数据。
概括起来,MVVM是由MVC发展而来,通过在Model之上而在View之下增加一个非视觉的组件,将来自Model的数据映射到View中。