MVVM 是 Model-View-ViewModel 的缩写,是M-V-VM三部分组成。它本质上就是MVC的改进版。
M:Model 代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。
V:View 代表视图UI,它负责将数据模型转化成UI 展现出来。
VM:ViewModel 将视图UI和业务逻辑分开,监听模型数据的改变和控制视图行为、处理用户交互。简单理解就是一个同步View 和 Model 的对象,连接 Model和View。
MVVM采用双向数据绑定,View中数据变化将自动反映到ViewModel上;反之,Model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewModel。
ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。
MVVM核心思想,开发者只需关注业务逻辑,不需要手动操作DOM,不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。也就是所谓的数据-视图分离,数据不会影响视图。
优点:
① Controller简洁清晰
ViewModel分离出来大部分的Controller代码,更加清晰和容易维护。② 方便测试
大部分Bug来自于逻辑处理,由于ViewModel把逻辑分离出来,可对ViewModel构造单元测试。③ 开发解耦
1)一位开发者负责逻辑实现,另一位开发者负责UI实现2)敏捷开发中,并非等后端借口提供后再开发,提供前可完成Controller和View的开发工作。
缺点:
① 代码量比MVC多;
② 需对每个Controller实现绑定,这是分离不可避免的工作量。