当前位置:网站首页>MVC与MVVM模式的区别
MVC与MVVM模式的区别
2022-08-09 22:18:00 【东方睡衣】
(一) MVC
1. MVC组成:
MVC思想 :Controller负责将Model的数据用View显示出来。
MVC | 解释 |
---|---|
① Model(模型) | 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。处理数据的crud |
② View(视图) | 是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。视图层,前端 |
③ Controller(控制器) | 是应用程序中处理用户交互的部分。**控制器负责从视图读取数据,控制用户输入,并将数据发送给模型。**一般包括业务处理模块和router路由模块 |
2. MVC优点:
- 耦合度低(运用MVC的应用程序的三个部件是相互独立的,改变其中一个不会影响其他两个);
- 重用性高(多个视图可以使用同一个模型)
- 生命周期成本低
- 部署快(业务分工明确)
- 可维护性高
3. MVC缺点:
- 不适合小型项目开发
- 视图与控制器联系过于紧密,妨碍了它们的独立重用
(二) M V VM——视图模型双向绑定(谈谈你对M V VM开发模式的理解)
1. MVVM 组成:
MVVM由Model,View,ViewModel三部分构成。
M V VM | 解释 |
---|---|
Model | 代表数据模型(Vue的data),数据和业务逻辑都在Model层中定义; |
View | 代表UI视图,负责数据的展示(Vue的el); |
ViewModel | 是一个对象,负责监听 Model 中数据的改变并且控制View视图的更新,处理用户交互操作; |
- Model 和 View 并无直接关联,而是通过 ViewModel 来进行交互的(即双向数据绑定),
- Model 和 ViewModel之间有着双向数据绑定的联系。View的变化可以引起Model的变化,Model的变化也可以引起View变化(类似于浅拷贝)。
ViewModel
是View
和Model
层的桥梁,数据会绑定到viewModel
层并自动将数据渲染到页面中,视图变化的时候会通知viewModel
层更新数据。
2. MVVM 优点:
- 低耦合:* 视图(View)可以独立于Model变化和修改,一个Model可以绑定到不同的View上,* 当View变化的时候Model可以不变化,当Model变化的时候View也可以不变;
- 可重用性:你可以把一些视图逻辑放在一个Model里面,让很多View重用这段视图逻辑。
- 独立开发:**双向数据绑定的模式,实现了View和Model的自动同步,因此开发者只需要专注对数据的维护操作即可,而不需要一直操作 dom。**可以实现双向绑定的标签:Input,textarea,select标签等(可以输入或改变标签内容的标签)
[ 延伸问题 ]
(1)MVC与MVVM有什么区别
- MVVM 和 MVC都是一种设计思想。
- MVVM 与 MVC 最大的区别就是:它实现了View和Model的自动同步* 当Model属性改变时,不用手动操作Dom元素去改变View的显示。* 而改变属性后,该属性对应View的显示会自动改变
(2)阐述一下你所理解的MVVM响应式原理
- vue是采用数据劫持配合发布者-订阅者的模式的方式,* 通过Object.defineProperty()来劫持各个属性的getter和setter,* 在数据变动时,发布消息给依赖收集器(dep中的subs),去通知(notify)观察者,做出对应的回调函数,更新视图
- MVVM作为绑定的入口,整合Observer,Compile和Watcher三者,* 通过Observer来监听model数据变化,* 通过Compile来解析编译模板指令,* 最终利用Watcher搭起Observer,Compile之间的通信桥路,* 达到数据变化Observer)=>视图更新;视图交互变化=>数据model变更的双向绑定效果。
边栏推荐
- 【mysql】查询今天9点
- JS中表单操作、addEventListener事件监听器
- harbor配置远程仓库
- Explore the TiDB Lightning source code to solve the found bugs
- VR全景结合小程序,为线上电商更好的服务
- Gartner全球集成系统市场数据追踪,超融合市场增速第一
- Sqlserver限制账户在哪些ip下才可以访问数据库
- Forbidden (CSRF token missing or incorrect.): /
- 【云原生】一文讲透Kubevela addon如何添加腾讯Crane
- [Interface Test] Decoding the request body string of the requests library
猜你喜欢
全面解析FPGA基础知识
杭电多校-Counting Stickmen-(思维+组合数+容斥)
Live Preview | ICML 2022 11 first-author scholars share online neural network, graph learning and other cutting-edge research
ElasticSearcch集群
Mysql/stonedb - slow SQL - 2022-08-09 Q16 analysis
YGG 经理人杯总决赛已圆满结束,来看看这份文字版总结!
SRv6性能测量
集群的基础形式
61.【快速排序法详解】
2022年最新《谷粒学院开发教程》:10 - 前台支付模块
随机推荐
上海一科技公司刷单被罚22万,揭露网络刷单灰色产业链
Leetcode 235. 二叉搜索树的最近公共祖先
mysql中的key是怎么用的,或者这个值有什么意义,如下图?
直播预告 | ICML 2022 11位一作学者在线分享神经网络,图学习等前沿研究
2021年国内外五大BI厂商——优秀的商业智能工具推荐
61.【快速排序法详解】
iNFTnews | 迪士尼如何布局Web3
setter与getter访问器属性——数据驱动显示
1018.值周
Basic operations of xlrd and xlsxwriter
Live Preview | ICML 2022 11 first-author scholars share online neural network, graph learning and other cutting-edge research
深入理解多线程(第一篇)
Leetcode 236. 二叉树的最近公共祖先
安踏携手华为运动健康共同验证冠军跑鞋 创新引领中国体育
Forbidden (CSRF token missing or incorrect.): /
tiup cluster scale-out
tiup cluster start
一体化伺服电机在三轴钻孔机中的应用
高手这样看现货白银走势图
k8s部署mysql