什么是MVVM?

news/2024/12/1 0:37:30/

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;…