来源:https://www.cnblogs.com/aisowe/p/11432722.html

MVVM 的 产生 / 实现 / 发展 可以写一篇很长的博客了, 这里仅写一下个人对 MVVM 的一些肤浅的认识.

1. 在 没有 MVVM 之前, 前端可以说是 jQuery一把梭 , jQuery 解决的是前端在写页面 交互/ 功能 时需要 频繁操作 dom 这一痛点, 在 简化 dom 操作 这一点上, 没有哪个库比 jQuery 更出色. 而且还能解决大部分 浏览器兼容性问题 , 用起来别提有多爽了.

2. 然而, 随着 网速 越来越快 / 手机性能 越来越好, 大家纷纷觉得可以在 网页 上多做文章, 而且 HTML5 和 ES6 的出现为开发者在 网页 上做 应用 提供了极大的便利, 此时人们发现, 原来非常好用的 jQuery 慢慢变得不合适了, 因为它没有解决 因为频繁调用 DOM 而产生的 性能问题 , 也没有简化开发者在处理用户与页面交互时所需的业务逻辑.

3. 为了解决上面的问题, MVVM 架构方式应运而生 , Model-View-ViewModel 的这个思想可能是受到了服务端的 MVC 架构 ( Model-View-Controler ) 的启发, 不过 MVVM 针对 前端的具体痛点, 强化了 Controler, 也就是: ViewModel, 我们可以认为 MVVM 里面最为核心的就是 ViewModel. 它将 View 和 Model 分离, 也就实现了 逻辑 与 展示 的分离, 使得我们可以不用像之前一样需要频繁地操作 DOM, 也不需要手动地去更新 数据( model ) 和 页面( view ). 这一切, ViewModel 都已经为我们做好了, 我们唯二需要做的就是: 1. 写页面2. 写逻辑. 至于怎样将逻辑和页面关联起来实现交互, ViewModel 表示: 这事儿你就不用管了, 让我来~.

4. 总结起来, MVVM 可以看成是 MVC 架构针对前端主要开发场景所衍生出来的 子集, 它对 视图 和 模型 进行了 严格分离, 强化了 Controler, 从而解决了在开发 现代Web应用 时所遇到的痛点.

怎样理解 MVVM ( Model-View-ViewModel ) ?相关推荐

  1. Vue复习知识点(理解MVVM模式、Vue实例配置的各选项、Vue的各种内置指令....)

    Vue复习知识点 一.理解MVVM模式 VVM是一种设计模式,它将应用程序分为三个部分:模型(Model).视图(View)和视图模型(ViewModel).它的主要目的是将应用程序的界面逻辑与业务逻 ...

  2. Model/View 教程

     说明:这篇博客基本都是翻译于Qt官方的Model/View Tutorial教程,无法理解的地方建议转到原文,同时,由于译者水平有限,如有差错欢迎指出. 原文:http://qt-project ...

  3. QT Basic 014 Model/View programming (模型、视图编程)

    前言:本文不是纯文本翻译,加入了对概念的理解,纯文本翻译,请看文后的一个链接. Model/View Programming Introduction to Model/View Programmin ...

  4. Qt 用 MVD(model view delegate) 模式 把图片变为灰度像素点 [官方Example]

    前言: 今天看到一个好玩的 qt 官方的 demo 可以把图片 变为 一个个灰度的像素点 先来看一下 这个是 qt 的图片 这个是我加载的 我的头像 不过 看 这个 demo 需要了解 Qt 的 MV ...

  5. MVC(Model View Controller)框架

    MVC框架 同义词 MVC一般指MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一 ...

  6. Hello Qt(三十三)——Model/View官方文档

    一.Model/View框架简介 Qt4推出了一组新的项视图类,使用Model/View框架来管理数据与表示层的关系.Model/View框架带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示 ...

  7. Qt Model/View教程

    修正版已转移到 Qt中文文档 目录 修正版已转移到 [Qt中文文档](https://www.qtdoc.cn/Src/M/Model_View_Tutorial/Model_View_Tutoria ...

  8. 第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关 ...

  9. QT Model/View 编程:MVC模型视图编程:实例实现(二)

    目录 样例001:现有模型中使用视图Using views with an existing model 样例002:使用模型索引 样例003:使用模型 样例004:使用模型的多个视图 样例005:委 ...

  10. Qt学习: Model/View实现表格和统计图

    博主QQ:1356438802 一.简介 Model/View结构使数据管理与相应的数据显示相互独立,并提供了一系列标准的函数接口和用于Model模块与View模块之间的通信.它从MVC演化而来,MV ...

最新文章

  1. 图论 ---- Tajran找割点 牛客多校2021 J Defend Your Country
  2. mysql日志文件名称_MySQL 日志文件 说明
  3. 高速缓冲DNS相关配置详情
  4. [Android] 输入系统(三):加载按键映射
  5. SpringCloud - Gateway 的使用
  6. No qualifying bean of type;Unsatisfied dependency expressed through field 解决办法(总结全网)
  7. lda新闻主题提取_LDA主题模型 | 原理详解与代码实战
  8. DropdownMenu 下拉菜单的使用
  9. HTML常用标签详解
  10. 计网自顶向下 学习笔记:Chap1
  11. 一个操作系统的实现(8)进程间通信
  12. 测试工程师需掌握的技能
  13. Activity在全屏属性情况下,WebView会出现输入法软键盘遮挡输入框(界面无法自动上调)问题
  14. win10系统由于服务器出错翻译失败,win10系统下谷歌浏览器翻译失败怎么办
  15. 《C++Primer》学习笔记(11-12章)
  16. 笔记本电脑桌面壁纸变全黑,没有任务栏
  17. Echarts仪表盘刻度线和标签配置
  18. 移动支付技术崛起 多功能集成的趋势
  19. 如何在html中添加分享按钮
  20. 域格9x07模块电信物联网卡(单4G卡)处理方法

热门文章

  1. 查看当前机器.net 版本的方法
  2. MFC中CString和int的转换
  3. MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出
  4. Python—实训day11—Pyecharts绘图
  5. IOS流水布局UICollectionView使用FlowLayout进行自由灵活组合
  6. 计算机解题报告,计算机题目33题(附带题解)精选.doc
  7. 计算机免修考试题库,计算机免修考试内容和样卷.doc
  8. QColorDialog中Pick Screen Color、Ok、Cancel不能汉化解决
  9. 新的一年babel了解一下
  10. 搞不清边缘计算几款产品差异?动动小手点这里!