1,MVVM
MVVM 对应 3个组成部分,Model(模型)、View(视图) 和 ViewModel(视图模型)。
- View:用户在屏幕上看到的结构、布局和外观,也就是UI;
- Model :是数据和逻辑;
- ViewModel 视图模型:是把两者建立通信的桥梁;
结构图如下:
在 MVVM 框架下,View 和 Model 之间没有直接的联系,而是通过 ViewModel 进行交互。
View 和 ViewModel之间以及 Model 和 ViewModel 之间的交互都是双向的,因此 view 数据的变化会同步到 Model 中;
而 Model 数据的变化也会立即反映到 View 上。可以说它们两者是实时更新的,互相影响。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而 View 和 Model 之间的同步工作完全是自动的,因此开发者只需要关注业务逻辑,不需要手动操作 DOM,也不需要关注数据状态的同步问题,这些都由 MVVM 统一管理;
【优点】
数据源和视图实现了双向绑定,很好的做到了数据的一致性,一个viewmodel层可以给多个view层共用。
为什么说Vue框架没有完全遵循MVVM
MVVM只能数据驱动视图,视图更改数据,而不能通过其他方式操作数据。
因为Vue中添加了一个属性ref,通过ref可以拿到DOM对象,用ref直接去操作视图。这一点上,违背了MVVM思想。
2,MVC
MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范;
- Model(模型)- 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
- View(视图)- 视图代表模型包含的数据的可视化。
- Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
【优点】
耦合性低,方便维护,可以利于分工协作 重用性高。