什么是MVVM?

news/2024/4/24 19:49:45/

MVVM 是 Model-View-ViewModel 的缩写,是M-V-VM三部分组成。它本质上就是MVC的改进版。

M:Model 代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。

V:View 代表视图UI,它负责将数据模型转化成UI 展现出来。

VM:ViewModel 将视图UI和业务逻辑分开,监听模型数据的改变和控制视图行为、处理用户交互。简单理解就是一个同步View 和 Model 的对象,连接 Model和View。

MVVM采用双向数据绑定,View中数据变化将自动反映到ViewModel上;反之,Model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewModel。

ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。

MVVM核心思想,开发者只需关注业务逻辑,不需要手动操作DOM,不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。也就是所谓的数据-视图分离,数据不会影响视图。

优点:

① Controller简洁清晰
 ViewModel分离出来大部分的Controller代码,更加清晰和容易维护。

② 方便测试
大部分Bug来自于逻辑处理,由于ViewModel把逻辑分离出来,可对ViewModel构造单元测试。

③ 开发解耦
1)一位开发者负责逻辑实现,另一位开发者负责UI实现

2)敏捷开发中,并非等后端借口提供后再开发,提供前可完成Controller和View的开发工作。
 

缺点:

① 代码量比MVC多;

② 需对每个Controller实现绑定,这是分离不可避免的工作量。


http://www.ppmy.cn/news/47518.html

相关文章

材料科学基础学习指导-吕宇鹏-名词和术语解释-第5章:相图

目录 第一部分 第二部分​​​​​​​ 第三部分 第四部分​ 第一部分 1.1组元:是材料科学中的基本术语。意思是组成合金的独立的、最基本的单元。 1.2相: 指合金中具有同一聚集状态、同一晶体结构和性质并以界面相互隔开的均匀组成部分。​​​​…

api数据接口文档_接口文档示例(Taobao/jd/pinduoduo/开放接口调用)

api数据接口文档_接口文档示例 本文主要是提供了一个接口文档的范文,内容修订历史、目录、时序图、接口要素描述、接口说明、使用示例、字典、FAQ。 使用MD格式文档(makedown),选择原因,容易格式转换,开发…

LeetCode238. 除自身以外数组的乘积

238. 除自身以外数组的乘积 描述示例解题思路解法1(最最暴力求解,但不符合要求)解法2(暴力求解,也不符合要求,但时间复杂度O(N))解法3(最优解,符合题意,时间复杂度O(N)) 描述 给你一个整数数组 nums&#…

Linux的.serivice文件介绍

一、什么是.service文件? linux中.servic文件是服务的配置文件,通过systemctl进行操作。存放位置:/usr/lib/systemd/system 二、配置说明 通常在,service配置文件中包含三个部分,分别为: 一、[Unit]:控制部…

创造rap一首,关于毕业论文难写,导师不负责

Verse1: 毕业季节,任务繁重 毕业论文,压力倍增 想着论文顺利,却被教授推脱 努力攀登高峰,却是一场空 Chorus: 毕业论文难写,导师不负责 对论文监督,一筹莫展 毕业论文难写,难缠之处 摆脱麻烦&am…

Unity记录3.5-地图-第三阶段总结

文章首发及后续更新:https://mwhls.top/4493.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 汇总:Unity 记录 摘要:柏林噪声与 …

Linux -- 进阶 Web服务器 基础前瞻( 二 )

WWW服务器的类型 : 静态网站 官方 : 仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server 不 需要与client 端有互动,可以浏览网站,但是无法数据上传。 ( 说白就是 服务器提供的…

C++并发锁相关并发

互斥锁mutex #include <mutex> {std::mutex mtx;mtx.lock();// do somethingmtx.unlock(); } mutex成员方法&#xff1a;lock()、try_lock()、unlock() try_lock&#xff1a; 1&#xff09;所有线程都没有lock时&#xff0c;调用lock&#xff0c;并返回true&#xff1b;…

鉴智机器人重磅发布双目智驾解决方案,新一代全系智驾产品线亮相上海车展

4月18日&#xff0c;以「拥抱汽车行业新时代」为主题的2023上海车展正式拉开帷幕。以视觉3D理解为核心的下一代自动驾驶系统提供商鉴智机器人&#xff0c;携全新升级的智驾产品线首次亮相车展&#xff0c;重磅发布基于AI的双目立体视觉智驾方案。 凭借双目立体视觉系统的差异化…

Event Camera (事件相机)

1.传统相机的缺点 1.随着计算机视觉领域的不断发展&#xff0c;目标检测的算法也越来越多样化&#xff0c;特别是近些年深度学习在计算机视觉领域的进步&#xff0c;已经产生了很多优秀的目标检测方法&#xff0c;这些基于帧的方法对于图片的质量有一定的要求&#xff0c;比如合…

电感耦合等离子体原子发射光谱法(ICP-AES)

一、定义 电感耦合等离子体原子发射光谱法(ICP-AES)&#xff0c;是以电感耦合等离子矩为激发光源的光谱分析方法&#xff0c;具有准确度高和精密度高、检出限低、测定快速、线性范围宽、可同时测定多种元素等优点&#xff0c;国外已广泛用于环境样品及岩石、矿物、金属等样品中…

【学习笔记】Integral Human Pose Regression

【学习资料】一文总结Integral Pose Regression方法的方方面面 - 知乎&#xff08;总结的很到位&#xff0c;一定要去看&#xff09; 1.两种基本方法的对比 1.解码方式 softmax和argmax的区别&#xff1a; 由于深度神经网络中的下采样步骤&#xff0c;热图的分辨率低于输入…

4.15搞力扣哈哈

1. 1023. 驼峰式匹配 难度中等107收藏分享切换为英文接收动态反馈 如果我们可以将小写字母插入模式串 pattern 得到待查询项 query&#xff0c;那么待查询项与给定模式串匹配。&#xff08;我们可以在任何位置插入每个字符&#xff0c;也可以插入 0 个字符。&#xff09; 给…

边缘计算那些事儿—边缘智能技术

0 背景 边缘智能是边缘计算中一个非常重要的方向。它将边缘计算和人工智能算法结合起来&#xff0c;在边缘设备上就近处理目标检测、物体跟踪&#xff0c;识别等任务。这种处理方式可以降低时延&#xff0c;减少数据上送云端对回传网络的冲击&#xff0c;同时保证数据的隐私和安…

linux安装和使用jekins

Jenkins详细安装配置部署--超详细_jenkins安装部署_宝贝富贵猪的博客-CSDN博客 1.安装JDK 2.获取安装包 下载页面&#xff1a;https://jenkins.io/zh/download/ 或者Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 3.安装Jenkins sud…

持续集成部署 - Docker-compose 部署 Redis 集群(三主三从)

Docker-compose 部署 Redis 集群 1. 拉取 Redis 镜像2. 在任意目录下创建一个名为“docker-compose.yml”的文件。3. 在终端中导航到项目根目录并运行以下命令:4. 初始化集群5. 测试Redis集群环境本次部署使用 Redis 版本为:6.2.0,为单机 Redis 集群,为什么是单机的,因为 …

python爬虫原理及源码解析(入门)

目录 一、爬虫是什么&#xff1f;二、爬虫的基本原理三、HTTP协议与响应4、爬虫实现源码 一、爬虫是什么&#xff1f; ​ 如果将互联网比作一张大的蜘蛛网&#xff0c;数据便是存放在蜘蛛网的各个节点&#xff0c;而爬虫就是一只小蜘蛛&#xff0c;沿着网络抓取自己的猎物(数据…

开启虚拟机出现报错:“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 报错原因解决方式&#xff08;这里以…

Dart进阶

Dart 是一种用于构建应用程序的编程语言&#xff0c;它具有许多语法糖&#xff08;Syntactic Sugar&#xff09;特性&#xff0c;这些特性能够简化代码并提高开发效率。以下是 Dart 中一些常见的语法糖特性&#xff1a; 级联操作符&#xff08;Cascade Notation&#xff09;&a…

无限制翻译软件-中英互译字数无限

翻译软件是我们工作及学习中必不可少的工具&#xff0c;然而许多翻译软件在使用时常常会出现字数限制的问题,这使得用户在处理长文本和大量文本时变得十分麻烦。如果你也遇到了类似的问题&#xff0c;那么哪个翻译软件不限制字数将为您带来全新的翻译体验。 以下是我们的哪个翻…