文章参考
阮一峰:MVC,MVP 和 MVVM 的图示

前言:在学习MVVM架构之前,我们先简单的了解一下,MVC和MVP这两个架构

1.MVC模式

MVC模式将软件可以分成三个部分。

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

  • View 传送指令到 Controller
  • Controller 完成业务逻辑后,要求 Model 改变状态
  • Model 将新的数据发送到 View,用户得到反馈

所有通信都是单向的

2.MVP模式

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

  1. 各部分之间的通信,都是双向的。
  2. View 与 Model 不发生联系,都通过 Presenter 传递。
  3. View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

2.MVVM模式

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP完全一样

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。
View层:
  视图层
  在我们前端开发中,通常就是DOM层。
  主要的作用是给用户展示各种信息。
Model层:
  数据层
  数据可能是我们固定的死数据,更多的是来自我们服务器,从网络上请求下来的数据。
  在我们计数器的案例中,就是后面抽取出来的obj,当然,里面的数据可能没有这么简单。
VueModel层:
  视图模型层
  视图模型层是View和Model沟通的桥梁。
  一方面它实现了Data Binding,也就是数据绑定,将Model的改变实时的反应到View中
  另一方面它实现了DOM Listener,也就是DOM监听,当DOM发生一些事件(点击、滚动、touch等)时,可以监听到,并在需要的情况下改变对应的Data。
总结起来:意思就是当M层数据进行修改时,VM层会监测到变化,并且通知V层进行相应的修改,反之修改V层则会通知M层数据进行修改,以此也实现了视图与模型层的相互解耦;

评 论