MVVM和MVC的区别,以及MVVM的缺点

Stella981
• 阅读 821

MVVM和MVC的区别

MVC和MVVM的区别其实并不大。都是一种设计思想。

主要就是MVC中Controller演变成MVVM中的viewModel。

MVVM主要解决了MVC中大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验。

当和Model频繁发生变化,开发者需要主动更新到View。

MVVM:是Model-View-ViewModel的简写

MVVM和MVC的区别,以及MVVM的缺点

M:对应于MVC的M

V:对应于MVC的V

VM:ViewModel,是把MVC里的controller的数据加载,加工功能分离出来

MVVM是Web前端一种非常流行的开发模式,

利用MVVM可以使我们的代码更加专注于处理业务逻辑而不是去关心DOM操作。

目前著名的MVVM框架有VUE,avalon,angular等

MVVM设计模式的优点

1.  双向绑定技术,当Model变化时,View-Model会自动更新,View也会自动变化。很好的做到数据的一致性

2.  由于控制器的功能大都移动到View上处理,大大的对控制器进行了瘦身

3.  View的功能进一步强化,具有控制的部分功能,

若想无限增强它的功能,甚至控制器的全部功能几乎都可以迁移到各个View上

(不过这样不可取,那样View干不了属于它职责范围内的事情)。

View可以像控制器一样具有自己都View-Model

4.  可以对View或ViewController的数据处理部分抽象出来一个函数处理model。

这样它们专职页面布局和页面跳转,它们必然更一步的简化。

MVVM设计模式的缺点

1.  数据绑定也使得bug很难被调试。比如你看到页面异常了,有可能是你的View的代码有bug,也可能是你的model的代码有问题。数据绑定使得一个位置的Bug被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。

2.  数据双向绑定不利于代码重用。客户端开发最常用的是View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同的模块model都不同。那就不能简单重用view了

3.  一个大的模块中model也会很大,虽然使用方便了也很容易保证数据的一致性,但是长期持有,不释放内存就造成话费更多的内存。

原文出处:https://www.cnblogs.com/mlw1814011067/p/10400240.html

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
九旬 九旬
3年前
前端培训-Vue专题之Vue基础
简介特点:MVVM框架,双向绑定,数据驱动,单页面,组件化。区别Vue和jQuery的区别:不直接操作DOM,而是操作数据。案例:HelloWorld你好,世界HTML代码:xml<h1msg</h1jQuery实现javascript$("h1").text("你好,世界");Vue实现javascriptthis.msg'你好,世界'
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
Vue 入门
Vue.js是构建用户界面的MVVM框架 ,只关注视图层Vue将DOM和数据绑定起来,一旦创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。这样就减少了不必要的DOM操作提高渲染效率,让前端程序员只需要关心业务逻辑不再关心DOM是如何渲染的MVC和MVVM的区别:MVC是后端分层开发概念,MVVM是前端视图层
浩浩 浩浩
3年前
面试问到烂的MVC、MVP以及MVVM
MVP什么是MVP?在了解MVP之前可以先观察MVC的架构模式。MVC中三个组成部分:1.View,即视图中的各个控件;2.Controller
凯特林 凯特林
3年前
最新最全的 Vue 面试题 ➕详解答案
前言本文整理了高频出现的Vue相关面试题并且附带详解答案难度分为简单中等困难三种类型大家可以先不看答案自测一下自己的Vue水平哈整理不易如果觉得本文有帮助记得点赞三连哦十分感谢!简单1MVC和MVVM区别MVCMVC全名是ModelViewController,是模型(model)-视图(view)-控制器
Stella981 Stella981
3年前
Android开发MVVM设计模式的实现及ButterKnife兼容结合源码详解并总结优缺点
MVVM设计模式主要是view通过中间件viewModel与model数据模型交互,咱们可以看一下流程图:!(https://imgblog.csdnimg.cn/20201015155610645.png?xossprocessimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_a
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
PHP入门教程之手把手编写自己的PHP MVC框架
1什么是MVCMVC模式(ModelViewController)是软件工程中的一种软件架构模式。MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。PHP中MVC模式也称WebMVC,从上世纪70年代进化而来。MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这