MVC(Mode View Controller)是一种设计模式,它将应用划分为三个部分:
数据(模型)、展示层(视图)、用户交互(控制器)。css
① 用户和应用产生交互html
② 控制器的事件处理器被触发编程
③ 控制器从模型中请求数据,并将其交给视图设计模式
④ 视图将数据呈现给用户mvc
M —— 模型 真正的逻辑处理,存放应用的全部数据对象mvvm
没必要知道V、C的逻辑,是应用中解耦出来的部分。函数
V —— 视图 只负责呈现给用户的页面的显示和样式的展现,html、css、js模板组成工具
除了模板中简单的条件语句,视图不该当包含任何其余逻辑。性能
将逻辑混入视图是编程大忌,但不是不容许,只要这部分逻辑没有定义在视图内便可。将视觉呈现逻辑归类为“视图助手”(helper):和视图相关的独立的小工具函数。单元测试
C —— 控制器 是M和V之间的纽带,进行页面节点事件的注册和控制,以及页面加载性能的实现。
从视图获取事件和输入,进行处理,并更新视图。页面加载时,会给视图添加监听事件,如监听表单按钮点击、提交。
MVVM(Model View ViewModel)耦合性比较松,灵活性更强。
M —— 模型 负责业务逻辑和数据的封装
V —— 视图 只负责界面和显示,与显示逻辑无关
VM —— 视图模型 负责了全部的显示逻辑,在模型的基础上对模型数据进行封装,并定义了显示层的逻辑,负责模型与视图的交互。
一个视图模型(VM)能够为多个视图(V)服务,视图层(V)只须要选择视图模型(VM)中的属性、方法并绑定。
① 低耦合 view能够独立于model变化和修改
② 可重用性 不少view能够用同一个viewmodel
③ 独立开发
④ 可测试 能够针对viewmodel来写测试,测试界面
MVP(Model View Presenter)切断了view和model的联系,让view只和presenter(原controller)交互,减小在需求变化中须要维护对象的数量。
MVP定义了presenter和view之间的接口,让一些能够根据已有的接口协议去各自分别独立开发,以此去解决界面需求变化频繁的问题。
① 模型与视图彻底分离,能够修改视图但不影响模型
② 能够更高效的使用模型,由于全部的交互都发生在presenter(展现器)内部
③ 能够将一个presenter用于多个视图,而不须要改变presenter的逻辑
④ 若是把逻辑放在presenter中,就能够脱离用户接口来测试这些逻辑(单元测试)
由于对视图的渲染presenter中,因此视图和presenter的交互过于频繁。若是presenter过多的渲染了视图,每每会使得它与特定的视图的联系过于紧密,“动一发极可能要牵另外一发”。