MVVM 模型

MVVM 是 Model-View-ViewModel 的简写。它本质上就是 MVC(Model-View-Controller)的改进版,即模型-视图-视图模型。

三个核心部分

  • Model:指的是后端传递的数据(领域模型 / 业务数据)。
  • View:指的是所看到的页面(UI 视图)。
  • ViewModel:MVVM 模式的核心,是连接 View 和 Model 的桥梁。

ViewModel 的两个方向

  1. 将 Model 转化成 View:将后端传递的数据转化成所看到的页面。实现方式是数据绑定。
  2. 将 View 转化成 Model:将所看到的页面转化成后端的数据。实现方式是 DOM 事件监听。

这两个方向都实现的,我们称之为数据的双向绑定。

总结

在 MVVM 的框架下,视图和模型是不能直接通信的。它们通过 ViewModel 来通信:

  • 当数据发生变化时,ViewModel 能够监听到数据的这种变化,然后通知到对应的视图做自动更新。
  • 当用户操作视图时,ViewModel 也能监听到视图的变化,然后通知数据做改动。

MVVM 中的 View 和 ViewModel 可以互相通信。MVVM 框架把 View 的状态和行为抽象化,将视图 UI 和业务逻辑分开。ViewModel 帮我们取出 Model 的数据,同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

MVVM(Model-View-ViewModel)框架的由来便是 MVP(Model-View-Presenter)模式与 WPF 结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有 MVP 框架并且把 WPF 的新特性糅合进去,以应对客户日益复杂的需求变化。

Vue 就是一个典型的 MVVM 框架:模板对应 View,data 对应 Model,Vue 实例(响应式系统 + 模板编译)对应 ViewModel。

来源整理自:vue3js.cn 面试官系列