计算机基础——MVVM和MVC的区别和详解

MVVM和MVC——区别和详解

一、MVC(Model-View-Controller)

  • view视图层、controller控制层、model数据层。各部分之间的通信都是单向的。
  • view传送指令到controller,controller完成业务逻辑后,要求model改变状态,Model将新的数据发送到View,用户得到反馈
在这里插入图片描述

解析:

  • 模型(Model):复制数据管理和业务逻辑。表示应用程序中的数据结构以及对数据的操作

  • 试图(View):负责用户界面的展示和呈现,通常是用户可以看到和至于交互的部分

  • 控制器(Controller):负责接收用户的输入并作出响应,处理用户与模型和视图之间的交互。

    控制器将用户的操作转发给模型进行处理,并将模型的结果传递给视图进行展示。

优点:

  • 能将应用程序的各个功能模块分离开来,提高代码的可维护性和可扩展性
  • 明确定义各个组件的职责,开发人员能更好的组织和管理代码,同时使代码更容易复用

二、MVVM(Model-View-ViewModel)

  • View视图层、Model数据层、ViewModel视图数据层。各部分通信都是双向的,采用双向数据绑定。
  • vue参考了MVVM,但不完全是。
在这里插入图片描述

解析:

  • 模型(Model):负责数据管理和业务逻辑
  • 视图(View):负责用户界面的展示和呈现
  • 视图模型(ViewModel):连接模型和视图的桥梁。视图模型负责获取和处理模型中数据,并未视图提供数据绑定所需的属性和命令。它将模型中的数据转换为视图可以使用的形式,同时也接收来自视图的用户输入并将其转发给模型进行处理

优点:

  • 解决了MVC中大量DOM操作使页面渲染性能降低,加载速度变慢的问题
  • 实现了view和model的自动同步:当Mdoel的属性改变时,我们不用自己手动操作DOM元素来改变view的显示,它会自动变化

三、MVC和MVVM的区别:

  • 在MVC里,view是可以直接访问Model的,所以View里会包含Model信息以及一些业务逻辑
  • MVC模型关注的是Model的不变,所以在MVC模型里,Model不依赖于View,但是View依赖于Model

  • MVVM在概念上真正将页面与数据逻辑分离的模式
  • 将数据绑定工作放到一个JS里去实现,而这个js文件的主要功能是完成数据的绑定,即把model绑定到UI的元素上
  • 双向绑定,方便去同时维护页面上都依赖于某个字段的N个区域,而不用手动更新它们

总结:

MVVM并不是用ViewModel完全取代了controller,mvvm只能算是mvc的升级版,viewModel存在目的在于抽离controller中展示的业务逻辑,而不是替代controller,其他视图操作业务等还是应该放在controller中实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值