什么是 MVVM?MVVM和 MVC 有什么区别?什么又是 MVP ?

news/2024/4/28 9:01:04/文章来源:https://blog.csdn.net/m0_69892739/article/details/130341469

目录标题

  • 一、什么是MVVM?
  • 二、MVC是什么?
  • 三、MVVM和MVC的区别?
  • 四、什么是MVP?

一、什么是MVVM?

MVVM是 Model-View-ViewModel的缩写,即模型-视图-视图模型。MVVM 是一种设计思想。

  • 模型(Model):代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。数据保存—存放着各种数据,有的是固定写死的,大多数是从后端返回的数据
  • 视图 (View):代表UI 组件,它负责将数据模型转化成UI 展现出来,用户界面,也就是DOM
  • 视图模型(View-Model):监听数据模型的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和Model的对象,连接Model和View。

MVVM的流程如下:
在这里插入图片描述

二、MVC是什么?

MVC 通过分离 Model、View 和 Controller 的方式来组织代码结构。其中 View 负责页面的显示逻辑,Model 负责存储页面的业务数据,以及对相应数据的操作。并且 View 和 Model 应用了观察者模式,当Model 层发生改变的时候它会通知有关 View 层更新页面。Controller 层是View 层和 Model 层的纽带,它主要负责用户与应用的响应操作,当用户与页面产生交与的时候,Controller 中的事件触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修改然后 Model 层再去通知 View 层更新。

三、MVVM和MVC的区别?

  • 都是一种设计思想
  • MVC后台用的多,MVC是Model-view-Controller的简写,即模型-视图-控制器。
  • MVC的目的就是将M和V的代码分离
  • MVC是单向通信,也就是View和Model,必须通过controller来承上启下。
  • MVVM实现了View和Model的自动同步,当Model的属性改变时,不用再自己手动操作DOM元素,提高了页面渲染性能。

在这里插入图片描述

四、什么是MVP?

MVP 模式与 MVC 唯一不同的在于 Presenter 和 Controller。
在 MVC 模式中使用观察者模式来实现当 Model 层数据发生变化的时候,通知 View 层的更新。这样 View 层和 Model 层糖合在一起,当项目逻辑变得复杂的时候,可能会造成代码的混乱,并且可能会对代码的复用性造成一些问题。
MVP 的模式通过使用 Presenter 来实现对 View 层和 Model 层的解。MVC 中的Controller 只知道 Model 的接口,因此它没有办法控制 View 层的更新,MVP 模式中,View 层的接口暴露给了 Presenter 因此可以在 Presenter 中将 Model 的变化和 View 的变化绑定在-起,以此来实现 View 和 Model 的同步更新。这样就实现了对 View 和 Model 的解耦Presenter 还包含了其他的响应逻辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102861.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了,下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装,选择安装目录,注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

信息收集(三)端口和目录信息收集

信息收集(一)域名信息收集 信息收集(二)IP信息收集 端口是什么 "端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机…

关于package.json中版本锁定的方法和问题解决

前置知识:先了解一下package.json和package-lock.json的关系和区别,请看这篇文章 然后我们来说一下改怎么锁定版本? 首先肯定是要把package.json中的 ^ 这个符号去掉,但是如果你只去掉package.json中的 ^那就太天真了&#xff0…

必应,百度,神马头条,搜狗专用站长seo推送工具大全

软件介绍: 百度开始打击滥用api问题,针对这个问题已经开发了拟人推送系列功能,放心使用。 五合一高效推送软件,目前支持百度,神马,必应,搜狗,头条,谷歌六大搜索引擎同步…

优秀简历的HR视角:怎样打造一份称心如意的简历?

简历的排版应该简洁工整,注重细节。需要注意对齐和标点符号的使用,因为在排版上的细节需要下很大功夫。除此之外,下面重点讲述几点简历内容需要注意的地方。 要点1:不相关的不要写。 尤其是与应聘岗位毫不相关的实习经历&#x…

服务提供者 Eureka + 服务消费者(Rest + Ribbon)实战

1、Ribbon背景介绍 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单来说,就是在配置文件中列出Load B…

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 在上一讲开发环境搭建中,我们讲解了如何搭建Ubuntu系统环境和ROS2开发运行环境。 1.Ubuntu系统安装 2.ROS2系统环境安装 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 查看帮助&am…

【计算机网络】网络命令的使用

文章目录 一、实验目的二、实验工具三、实验要求四、实验过程01 ping 命令的使用应用1:验证本地计算机上是否正确安装了 TCP/IP 协议应用2:测试某个目的主机可达性应用3:键入 ping,查看 ping 的其他参数含义 02 netstat 命令的典型…

可能是最强的Python可视化神器,建议一试

数据分析离不开数据可视化,我们最常用的就是Pandas,Matplotlib,Pyecharts当然还有Tableau,看到一篇文章介绍Plotly制图后我也跃跃欲试,查看了相关资料开始尝试用它制图。 Plotly Plotly是一款用来做数据分析和可视化的…

关于GeoServer发布的wfs服务的精度问题

本周基于arcgis/core组件,利用arcgis api for js 4.22版本加载GeoServer发布的同一数据源的wms和wfs服务,出现了偏移的问题。 分析:同一数据源不同的访问方式,出现了偏移,这是很严重的问题。初步判断为js api加载方式的…

HTB-SecNotes

HTB-SecNotes 信息收集8808端口80端口通过CSRF获取通过二次注入 立足tyler -> administrator 信息收集 8808端口 Windows IIS 10.0 可以从官方文档查看10.0版本可能的操作系统。 80端口 通过CSRF获取 目录扫描发现需要登陆后继续进一步操作啊。 对其进行简单的SQL注入测…

Ubuntu20.04安装CUDA和CUDNN

CUDA是GPU深度学习的运行库,那么cuDNN就是训练加速工具,两者要相互配合使用,所以一般机器学习需要训练引擎(tensorflow-gpu) CUDA cuDNN使用。想不安装cuDNN是不可以的,而且cuDNN版本要和CUDA版本相互搭配。 1、前置工作 查看…

MinIO快速入门

一、MinIO概述 官网地址:http://www.minio.org.cn/ 文档地址:http://docs.minio.org.cn/docs/ MinIO是一款基于Apache License v2.0开源协议的分布式文件系统(或者叫对象存储服务),可以做为云存储的解决方案用来保存海…

uniapp + vue3开发中组合式函数必须是一个同步函数

目录 vue3中的组合式函数用法: 官网示例异步组合式函数:同步函数写法 改造成导出async组合式函数时: uniapp无法使用async组合式函数的原因: vue3中的组合式函数使用时,导出的组合式函数必须是一个同步函数。 vue3…

推荐一个开源的区块链开发者工具网站

开源区块链开发者工具箱 https://ChainTool.tech 今天可以正式上线了。ChainTool 使用完全开源的方式编写一些开发者日常经常使用的工具。 关于 ChainToolDAO 大约在两个月前, ChainToolDAO 成立了,成立 ChainToolDAO 的来由是这样的:我是一…

【14】SCI易中期刊推荐——计算机 | 人工智能(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

QMS-云质说质量 - 10 我和我的客户投诉(2) - 客户逐利 驱除良币

云质QMS原创 转载请注明来源 作者&#xff1a;王洪石 上策伐谋 中策伐交 前面发过一篇关于客户投诉的文章“逢年过节要祈祷”&#xff0c;引起了很多质量人的共鸣&#xff0c;特别是汽车零部件行业曾经和正在负责客诉的质量同行们。 真实的产品质量问题&#xff0c;是否发生只…

【GoodERP专题】第一章 GoodERP应用专题之good_expense 费用报销 的使用

文章目录 一、模块设计二、模块1.主数据2.费用申请单3.借款单【付款】4.费用报销单【挂账/付款】5.出差申请单6.出差借款单【付款】7.差旅费报销单【挂账/付款】 总结 一、模块设计 费用报销模块是基于GoodERP框架设计的&#xff0c;该模块是为了解决企业内外费用相关报销任务处…

idea 2023版本创建maven管理的Scala项目教程

目录 1、创建项目1.1、创建项目名及简单配置1、2 刚开始创建好后的项目是这样的1、3 进行相关设置1&#xff09;增加maven管理2&#xff09;增加scala目录&#xff0c;并设置成resource目录 注意&#xff1a; 本项目写得教程是基于您得Java jdk、Scala jdk、maven这些都是安装配…

我们都被 ChatGPT 给骗了?

引言&#xff1a; 用过 ChatGPT 的人都知道&#xff0c;当你与 chatgpt 对话的时候&#xff0c;它是“逐字输出”的&#xff0c;就像真的有个人在跟你打字一样。其实&#xff0c;这种技术并没有那么神奇&#xff0c;这种技术叫做“实时文本生成”或“逐字输出”技术&#xff0…