首先知道M,V,C分别代表什么意思,就会更容易的理解三种模式
M  –  model  –  数据
V  –  view  –  视图(前端界面)
C  –  controller  –  控制器(JS逻辑)
接下来我们就进入正题,看看三种模式的区别究竟在哪里?
MVC:

  1. View(视图)传送指令到Controller(控制器)层
  2. Controller(控制器)完成业务逻辑后,要求Model(数据)改变状态
  3. Model(数据)将新的数据发送到View(视图),用户得到反馈

对于MVC开发模式来说,开发者将三者定义成不同的类,实现了表现,数据,控制的分离。开发者更多的是从技术的角度来对UI进行拆分,实现松耦合。
缺点:
 所有的通信都是单向的;
在接收用户指令时,MVC可以分成俩种方式。
一种是View(视图)接收指令,传递给Controller(控制器),
另一种是直接通过Controller接收指令。
MVP:
MVP模式将Controller(控制器)改名为Presenter,同时改变了通信方向。

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

MVVM:
MVVM模式将Presenter改名为ViewModel,基本上与MVP模式完全一致。
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在ViewModel,反之亦然。