MVC和MVVM都是一种设计思想。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC是单向通信,也就是view和model必须通过controller来承上启下。MVC和MVVM的区别不是VM完全取代了C,ViewModel存在的目的在于抽离controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在controller中实现,也就是说MVVM实现的业务逻辑组件的重用。
MVVM是Model-view-viewModel的简写,即模型-视图-视图模型。模型指的是后端传递的数据;视图指的是所看到的页面,viewModel视图模型是mvvm模式的核心,他是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,及所看到的页面转化成后端的数据。实现的方式是DOM事件监听。这两个方向都实现的,我们称之为数据的双向绑定。利用MVVM可以使我们的代码更加专注于处理业务逻辑而不去关心DOM操作,目前著名的MVVM框架有VUE,AVALON,angular等。
MVVM设计模式的优点:
1.双向绑定技术,当Model变化时,View-Model会自动更新,View也会自动变化,很好的做到数据的一致性。
2.由于控制器的功能大都移动到View上处理,大大的对控制器进行瘦身
3.可以对view或viewController的数据处理部分抽象出来一个函数出来model.这样他们专职页面布局和页面跳转,他们必然更一步简化。
mvvm设计模式的缺点:
数据绑定也使得Bug很难被调试,比如你看到页面异常了,有可能是你的view的代码有bug也可能是你的model代码有问题,数据绑定使得一个位置的Bug被快速传递到别的位置,找到错误的地方不太容易。数据双向绑定不利于代码的重用。

MVVM和MVC的区别,以及MVVM的缺点相关推荐

  1. 什么是MVVM,MVVM和MVC的区别?

    1. Mvvm定义MVVM是Model-View-ViewModel的简写.即模型-视图-视图模型.[模型]指的是后端传递的数据.[视图]指的是所看到的页面.[视图模型]mvvm模式的核心,它是连接v ...

  2. MVVM和MVC有什么区别

    MVVM与MVC的区别有: mvvm各部分的通信是双向的,而mvc各部分通信是单向的: mvvm是真正将页面与数据逻辑分离放到js里去实现,而mvc里面未分离. MVC MVC是包括view视图层.c ...

  3. mvvm模式和mvc的区别_Android 开发中的架构模式 -- MVC / MVP / MVVM

    预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 更多面试内容,面试专题,flutter视频 全套,音视频从 ...

  4. 浅谈开发中的MVVM模式及与MVP和MVC的区别

    2019独角兽企业重金招聘Python工程师标准>>> 我记得前段时间分享了一篇文章< 浅谈Andorid开发中的MVP模式>(点击可跳转),反响不错,为了进一步介绍MV ...

  5. MVC、MVP、MVVM模式的概念与区别

    ------<MVC.MVP.MVVM模式的概念与区别> 前言: 预热: 挨个讲讲: MVC MVP MVVM 结尾: 前言: 首先MVC,MVP,MVVM都是为了解决UI页面与逻辑代码分 ...

  6. MVC/MVVM模式特点及区别

    一.概述 目录 一.概述 二.MVC 四.总结 MVC,MVP,MVVM是三种常见的前端架构模式(Architectural Pattern),它通过分离关注点来改进代码组织方式.不同于设计模式(De ...

  7. mvvm mvc的区别

    一.MVC(Model-View-Controller) MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Mod ...

  8. 【Android】Android安卓架构MVC、MVP、MVVM之间的区别和联系(图解+案例+源码)

    https://github.com/SETANDGET/AndroidArchitectureDemo 代码 一.问题背景 二.Android安卓架构MVC.MVP.MVVM 1.MVC(Model ...

  9. [最全]Android安卓架构MVC、MVP、MVVM之间的区别和联系(图解+案例+源码)

    一.问题背景 博主最近在准备春招面试中介绍自己简历中Android项目的MVP架构,但是博主发现若自身不彻底弄懂Android安卓架构MVC.MVP.MVVM之间的区别和联系,博主将无法准确地向面试官 ...

最新文章

  1. 想转行ML/AI却没有方向?这篇指南告诉你!
  2. AOP、注解实现日志收集
  3. CTFshow 命令执行 web29
  4. idea的logback的getter和setter方法失效
  5. school‘s movie demonstration
  6. 【☀️C语言函数传参の结构体数组篇☀️】
  7. Node爬取简书首页文章
  8. [黑客技术]提权总结21种办法篇
  9. eclipse项目一直显示有错,但是一直找不到错误在哪里
  10. eq linux_《Linux设备驱动程序》(十二)——时间操作(一)
  11. nginx设置http强制跳转https
  12. OpenGL在MFC下编程原理
  13. 注意了,有关学习前端的一些“坑”,别踩!
  14. C语言快速学习笔记001-相关语法
  15. 腾讯“立知”被指抄袭“即刻” APP,目前已被下线
  16. 力荐50个最实用的免费机器学习数据集
  17. python读音有道-Python实现有道翻译+语音播报
  18. jQuery中浏览器版本判断的一个BUG,此BUG已影响到jqModal,thickbox等多个jQuery插件的应用...
  19. 最新微软Windows Server 2008之一 系统安装
  20. lg2用计算机怎么算,lg计算器(log计算器在线)

热门文章

  1. 阿里云RDS(Mysql)与ECS自己搭建的数据库做主从
  2. Easyexcel 实现导出Excel到流中并支持excel抬头国际化基础工具类实现
  3. Java习题3(1.封装的意义有哪些?2.final关键字的作用有哪些?3. 简述覆盖与重载的区别。4. 写一个冒泡排序算法。)
  4. 最新!超10多所高校明确不再为全部研究生提供宿舍!
  5. python中的df是什么意思_df.head()和df.head有什么区别?
  6. Linux史上最全教程
  7. matplotlib基本功能
  8. 【JTeam Champion NFT】怎么参与JTeam NFT项目
  9. 元宇宙金谷诺亚线上品丰富 经信研究-李刚:打造实体艺博馆
  10. 前端通过range控制的rgba配色小工具