深入理解MVVM模式

1,103 阅读3分钟

MVVM是什么?

MVVM(Model-View-ViewModel)是一种软件架构模式,用于分离用户界面(View)的开发与业务逻辑(ViewModel)的开发,它可以使开发人员能够更好地管理和维护用户界面和业务逻辑之间的关系。

MVVM 由 Model、View、ViewModel 三部分构成:

  • 模型(Model): 代表数据模型,表示应用程序的数据和业务逻辑;
  • 视图(View): 是用户界面的可视化部分,也就是我们写的HTML,CSS,和模板;
  • 视图模型(ViewModel): 是MVVM中的核心,是视图和模型之间的连接器,负责处理视图和模型之间的数据传递和交互。其核心是提供对View 和 Model 的双向数据绑定,ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

进一步提问:

为什么要使用MVVM模式?和MVM模式有什么区别?

当业务程度越来越复杂时,当前端发展起来后,这时前端开发就暴露出了三个痛点问题:

  • 开发者在代码中大量调用相同的 DOM API, 处理繁琐 ,操作冗余,使得代码难以维护。
  • 大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。
  • 当 Model 频繁发生变化,开发者需要主动更新到View ;当用户的操作导致 Model 发生变化,开发者同样需要将变化的数据同步到Model 中,这样的工作不仅繁琐,而且很难维护复杂多变的数据状态。

其实,早期 jquery 的出现就是为了前端能更简洁的操作 DOM 而设计的,但它只解决了第一个问题,另外两个问题始终伴随着前端一直存在。 MVVM 的出现,完美解决了以上三个问题 。

MVVM模式和VUE的关系?

MVVM是一种软件架构模式,VUE就是MVVM中ViewModel层的一个实现者,vue通过数据绑定和DOM监听实现了双向数据绑定,vue通过Object.defineProperty劫持数据的getter和setter能够监听到数据的变化,并对视图的内容进行更新,也能够通过DOM事件监听到视图的变化,并通知数据发送改变。

image.png

使用MVVM模式的好处包括:

  • 分离关注点:将界面逻辑与业务逻辑分离,使代码更易于理解和维护。
  • 可测试性:由于视图模型是独立于视图的,因此可以更容易地编写单元测试。
  • 可重用性:视图模型可以在不同的界面中重用,提高开发效率。

参考:

什么是MVVM模式?_mvvm模式理解_若年封尘的博客-CSDN博客 前端面试 vue 部分 (1)——谈谈你对 MVVM 的理解 - 简书 (jianshu.com) 前端面试--谈谈你对MVVM的理解?如何回答_Ajiia的博客-CSDN博客 MVC,MVP 和 MVVM 的图示 - 阮一峰的网络日志 (ruanyifeng.com)