MVVM软件架构模式

MVVM是模型-视图-视图模型的架构模式,核心是视图模型,实现数据双向绑定。相对于MVC和MVP,MVVM降低了耦合度,提高了代码复用,便于独立开发和测试,但复杂数据绑定可能增加调试难度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每天一个前端面试题之 MVVM软件架构模式

一、MVVM的定义

MVVM是model view view-model的简写,即模型-视图-视图模型,是一种软件架构模式。

view: 视图层,即用户界面。其主要功能是定义用户界面的结构。

model: 数据模型,后端的各种数据,主要围绕数据库展开。其主要功能是用于支持应用程序中的views。

view-model: 视图模型层,是整个MVVM软件架构的核心,是连接view和model的桥梁。其主要功能是通过数据绑定,将后端传递的数据转化为所能看到的页面,通过DOM事件监听将所看待的页面转化为后端的数据。即,实现数据的双向绑定。

通过下图可以更直观的理解MVVM。(View的变动,自动反映在 ViewModel,ViewModel的变化也会自动的反映发到View中。View 与 Model 不发生联系)
在这里插入图片描述

Vue就是MVVM的实现者,React,Angular也是。下图是Vue中的。在这里插入图片描述

二、为什么要使用MVVM

MVVM是MVC的改进版,立足于MVP并进一步的改进。那就先来说一下MVC和MVP.

2.1、MVC

MVC是Model View Controller的简写, 即模型-视图-控制器。M和V指的意思和MVVM中的M和V意思一样。C即Controller指的是页面业务逻辑。使用MVC的目的就是将M和V的代码分离,从而使同一个程序可以使用不同的表现形式。

在这里插入图片描述

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈

可以看到其所有的通信都是单向的。view和model是直接进行通信的。view和model之间随着业务量的不断庞大,会出现和蜘蛛网一样难以处理的关系,随着前端应用的复杂程度越来越复杂。所以必须要改进。

2.2、MVP

MVP是 Model View Presenter 的简写。它与MVC的不同是改变了通信方向。

在这里插入图片描述

  1. 各部分之间的通信,都是双向的。

  2. View 与 Model 不发生联系,都通过 Presenter 传递。

  3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

2.3、MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。只是将view和viewmodel之间是双向绑定,View的变动,自动反映在 ViewModel,反之亦然。

三、MVVM的优势与存在的问题

优点

  1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
  3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
  4. 可测试。界面素来是比较难于测试的,测试可以针对ViewModel来写。

缺点

  1. 有人认为对于简单的UI,MVVM可能过于庞大。
  2. 在View和ViewModel之间没有提供紧密的耦合
  3. 当具有复杂的数据绑定时,调试过程将很复杂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值