MVC(Model-View-Controller)
MVC将应用程序分为三个主要部分:
- Model(模型):代表应用程序的数据和业务逻辑。它处理数据的存储、检索和验证等任务。模型不关心数据的显示方式,只关注数据的处理。
- View(视图):负责数据的展示。它是用户看到的界面,比如网页、窗口或表单等。视图通常会从模型中获取数据,并将其以可视化的方式呈现给用户。
- Controller(控制器):作为模型和视图之间的协调者。它接收用户的输入(如点击、触摸等),并根据这些输入更新模型和视图。控制器确保模型和视图之间的通信是同步的。
MVC模式有助于实现关注点分离,使得代码更加模块化、可维护和可测试。然而,在某些复杂的UI场景中,视图和控制器之间的交互可能会变得复杂,导致代码难以维护。
MVVM(Model-View-ViewModel)
MVVM是MVC的一个变种,它解决了MVC中视图和控制器之间紧密耦合的问题。MVVM将MVC中的Controller替换为ViewModel,使视图和模型之间的通信更加清晰和直接。
- Model(模型):与MVC中的模型相同,代表应用程序的数据和业务逻辑。
- View(视图):与MVC中的视图相同,负责数据的展示。
- ViewModel(视图模型):是视图和模型之间的适配器。它包含视图所需的数据和命令,并将它们暴露给视图。视图模型将视图从复杂的业务逻辑中解耦出来,使得视图可以专注于数据的展示,而无需关心数据的来源和处理方式。
MVP(Model-View-Presenter)
是对MVC(Model-View-Controller)模式的改进,主要解决了MVC模式中视图和模型之间的紧耦合问题。
- Model(模型):负责数据的处理和存储,包含业务逻辑和数据。它与MVC中的模型类似,但更侧重于数据的处理和业务逻辑的实现。
- View(视图):负责用户界面的展示,它是用户与之交互的界面部分。与MVC不同的是,在MVP中,视图并不直接使用模型,而是通过Presenter进行交互。
- Presenter(演示者/表示器):作为视图和模型之间的协调者,主要负责和model和view的双向交互。Presenter接收视图的输入,更新视图并与模型进行交互。这样,视图和模型之间的耦合度大大减少,使得代码更加模块化和可测试。
其中,MVC可能会导致前端开发效率不高,前后端职能不清等问题,MVVM中的viewmodel通过数据相应式机制自动相应model中数据变化,减少了大量DOM操作代码,提高开发效率,提高性能。