vue面试:MVVM、MVC、MVP的区别?

vue面试:MVVM、MVC、MVP的区别?

  • MVVM、MVC、MVP是什么?
    • (1)MVC
    • (2)MVVM
    • (3)MVP

MVVM、MVC、MVP是什么?

MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
在开发单页面应用时,往往一个路由页面对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,如果项目变得复杂,那么整个文件就会变得冗长、混乱,这样对项目开发和后期的项目维护是非常不利的。

(1)MVC

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

(2)MVVM

MVVM 分为 Model、View、ViewModel:

Model代表数据模型,数据和业务逻辑都在Model层中定义;
View代表UI视图,负责数据的展示;
ViewModel负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作;

Model和View并无直接关联,而是通过ViewModel来进行联系的,Model和ViewModel之间有着双向数据绑定的联系。因此当Model中的数据改变时会触发View层的刷新,View中由于用户交互操作而改变的数据也会在Model中同步。
这种模式实现了 Model和View的数据自动同步,因此开发者只需要专注于数据的维护操作即可,而不需要自己操作DOM。
在这里插入图片描述

(3)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://xiahunao.cn/news/2821765.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【复现】蓝凌OA SQL注入漏洞_61

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 蓝凌智能OA是由深圳市蓝凌软件股份有限公司开发,是一款针对中小企业的移动化智能办公产品,融合了钉钉数字…

【前端素材】推荐优质在线大气数码商城电商网页ClassiList平台模板(附源码)

一、需求分析 1、系统定义 电子数码电商平台是专门销售电子数码产品(如手机、电脑、相机、智能设备等)的在线电子商务平台。这些平台提供了一个便捷的购物环境,让消费者可以方便地浏览、比较和购买各种电子数码产品。 2、功能需求 在线大…

苹果备忘录导出方法

文章目录 前言方法1:iCloud 导出方法2:Pages 文稿导出(最推荐)方法3:借助Mac软件导出总结 前言 苹果生态真是让我们又爱又恨,其得益于无缝整合、安全性和应用程序生态系统,能够让在用户在自己的…

渗透测试靶场环境搭建

1.DVWA靶场 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,包含了OWASP TOP10的所有攻击漏洞的练习环境,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,同时…

叠纸探索开放世界,女性向游戏的新生机?

女性向游戏也能搭载开放世界? 随着新一批游戏版号的发放,叠纸的新作《无限暖暖》毫无疑问成为了最受关注的游戏之一,换装冒险开放世界的组合为女性向游戏市场带来了新的惊喜。 作为暖暖系列的第五部作品,《无限暖暖》对比前作可以…

数据库常见理论常见面试题(总结)

一、前言 这里呢,博主会介绍一些平时关于数据库的理论的问题,比如数据库的三级模式两级映射、触发器、范式、存储过程、视图等等概念知识,但是像索引、事务、锁等内容,之前的文章就讲解过了,这里就不作过多的介绍了&am…

transformer--编码器2(前馈全连接层、规范化层、子层链接结构、编码器层、编码器)

前馈全连接层 什么是前馈全连接层: 在Transformer中前馈全连接层就是具有两层线性层的全连接网络 前馈全连接层的作用: 考虑注意力机制可能对复杂过程的拟合程度不够,通过增加两层网络来增强模型的能力 code # 前馈全连接层 class PositionwiseFeedForward(nn.Module):de…

图片如何无损放大?分享三个方法帮你快速解决

在数字时代,图片已成为我们生活的重要组成部分,无论是社交媒体的分享,还是专业设计的呈现,都离不开高质量的图片。然而,当我们试图放大一张图片以获取更多细节时,常常会遇到一个令人头疼的问题——失真。此…

多版本jdk共享jar

多版本jdk共享jar Java 9的一个有趣特性是支持多版本JAR文件。这是什么意思?过去,库开发人员在支持新版本的Java时有三种选择: 提供两个(或更多)不同的JAR文件,每个文件对应他们想要支持的Java版本。它们的版本号可能是“1.2-java-5”和“1.2-java-1.…

小工具——抖音短视频评论自动同步

很多时候喜欢看抖音的评论,有时候评论也是一个查疑解惑的好地方,很多人也喜欢把抖音的评论集中起来做分析。 因为一个朋友问过我这回事,闲着的时候也研究了下抖音,所以自己做了个小工具,自动同步你观看的抖音短视频的…

解读人工智能的理论基石

1956年的一个夏天,在达特茅斯学院的一个小会议室里,一群充满好奇和野心的年轻科学家聚集在一起,他们有一个共同的梦想:创造能够模仿人类智能的机器。这不仅仅是科幻小说的情节,更是人工智能历史上一个真实的起点。从那…

深度强化学习入门(待修改)

目录 前言 一、强化学习 1.马可洛夫链 2.蒙地卡罗 3.时序差分TD 4.gym学习​编辑 FrozenLake 二、RL基本算法 1.Q-learning和SARSA 2.DQN Deep network Qlearning DQN 三、PG策略算法 总结 前言 这段时间学习深度强化学习的总结。 一、强化学习 强化学习是做出最佳决策的科学…

useState多次渲染页面卡顿 useMemo

useState多次渲染页面卡顿 state变化了组件自然应该重新进行渲染,但有时我们并不需要。 React.memo()(useMemo)是一个高阶组件,它接收另一个组件作为参数,并且会返回一个包装过的新组件,包装过的新组件就会具有缓存作用&#xff…

Freesia 构建本地项目与远程仓库

构建远程仓库 1. 创建一个项目目录,根据创建远程仓库后的提示来进行 2. 本地仓库初始化 git init 初始化git文件 cd 项目目录 git init创建并提交README.md文件 touch README.md git commit -m "first commit"将本地仓库连接到远程仓库 git remote …

基于session注册JAva篇springboot

springboot3全家桶,数据库 :redis,mysql 背景环境:邮箱验证码,验证注册 流程:先通过邮箱验证,发送验证码,将获取到的session和验证码,存入redis里(发送邮箱…

js截取图片地址后面的参数和在路径中截取文件名或后缀名

文章目录 前言截取地址 ?后面的参数在路径中截取文件名或后缀名总结 前言 在处理网页上的图片资源或者其他类型的文件资源时,你可能会遇到需要使用这些技巧的情况。以下是一些具体的使用场景: 动态修改图片参数:如果你有一个图片U…

2024年【制冷与空调设备运行操作】考试总结及制冷与空调设备运行操作模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 制冷与空调设备运行操作考试总结参考答案及制冷与空调设备运行操作考试试题解析是安全生产模拟考试一点通题库老师及制冷与空调设备运行操作操作证已考过的学员汇总,相对有效帮助制冷与空调设备运行操作模…

《PyTorch深度学习实践》第八讲加载数据集

一、 1、DataSet 是抽象类,不能实例化对象,主要是用于构造我们的数据集 2、DataLoader 需要获取DataSet提供的索引[i]和len;用来帮助我们加载数据,比如说做shuffle(提高数据集的随机性),batch_size,能拿出Mini-Batch进行训练。它…

Entry First Day 入职恩孚第一天

入职第一天,电脑还没配置好就去了工厂。 熟悉了一下设备,切了几个小玩意, hello world 一下。 了解了串行端口的Nodejs的库 https://github.com/serialport/node-serialport,以后要用这个东西和硬件通讯,安装&#…

【C++精简版回顾】15.继承派生

1.继承派生的区别 继承:子继父业,就是子类完全继承父类的全部内容 派生:子类在父类的基础上发展 2.继承方式 1.public继承为原样继承 2.protected继承会把public继承改为protect继承 3.private继承会把public,protected继承改为pr…