MVC
Model模型层:数据操作层,数据相关的模型,用于将数据进行存储
View视图层:视图层,人机交互界面,最前端的响应交互
Controller控制层:业务逻辑层,监控数据与视图,处理前两者的交互
MVVM
M(Model):模型层。就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。
V(View):视图层。就是展现出来的用户界面。
VM(ViewModel):视图模型层。连接view和model的桥梁。因为,Model层中的数据往往是不能直接跟View中的控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象。
MVVM,是Model-View-ViewModel的简写,是M-V-VM三部分组成。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,其中ViewModel将视图 UI 和业务逻辑分开,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。
MVVM采用双向数据绑定,view中数据变化将自动反映到viewmodel上,反之,model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。
MVVM核心思想,是关注Model的变化,让MVVM框架利用自己的机制自动更新DOM,也就是所谓的数据-视图分离,数据不会影响视图。
>>优点
1、Controller简洁清晰
ViewModel分离出来大部分的Controller代码,更加清晰和容易维护。
2、方便测试
大部分Bug来自于逻辑处理,由于ViewModel把逻辑分离出来,可对ViewModel构造单元测试。
3、开发解耦
1)一位开发者负责逻辑实现,另一位开发者负责UI实现
2)敏捷开发中,并非等后端借口提供后再开发,提供前可完成Controller和View的开发工作。
>>缺点
1、代码量比MVC多
2、需对每个Controller实现绑定,这是分离不可避免的工作量。