1. 首先解释:MVVM是什么?干什么用的?

1:MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式。2:其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定。3:以Vue.js 为例。Vue是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层。4:它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发
更加高效、便捷。


上图来源博文:图文导航链接:https://www.jianshu.com/p/84ed38cbb5fa

2. 继续引出:为什么会出现MVVM? 框架的发展? MVC----MVP----MVVM

最初的MVC–Model-View-Controller
1:最初是MVC:MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller就是 模型—视图—控制器,也就是说一个标准的Web 应用程式是由这三部分组成的2:在HTML5 还未火起来的那些年,MVC 作为Web 应用的最佳实践是OK 的.3:这是因为 Web 应用的View 层相对来说比较简单,前端所需要的数据在后端基本上都可以处理好4:View 层主要是做一下展示,那时候提倡的是 Controller 来处理复杂的业务逻辑,所以View 层相对来说比较轻量,就是所谓的瘦客户端思想。

后来的MVP–Model-View-Presenter


3. 最终出现:为什么会出现MVVM? MVVM

1、 开发者在代码中大量调用相同的 DOM API,处理繁琐 ,操作冗余,使得代码难以维护。2、大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。3、 当 Model 频繁发生变化,开发者需要主动更新到View ;当用户的操作导致 Model 发生变化,开发者同样需要将变化的数据同步到Model 中,这样
的工作不仅繁琐,而且很难维护复杂多变的数据状态。

MVVM的出现完美的解决了上面的几个问题:

1:VVM 由 Model、View、ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负
责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。2:在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数
据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。
3:ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发
者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。



3. Vue.js与MVVM的关系?

Vue.js 可以说是MVVM 架构的最佳实践,VUE并没有完全遵循MVVM,专注于 MVVM 中的 ViewModel,不仅做到了数据双向绑定,而且也是一款相对比较轻量级的JS 库,API 简洁,很容易上手。

1;Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现数据绑定的。当把一个普通 Javascript 对象传给 Vue 实例
来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它
们让 Vue 追踪依赖,在属性被访问和修改时通知变化。



上图引用自:https://blog.csdn.net/qq_29722281/article/details/99717680

本文参考的几篇介绍十分详细的博文链接:
1:前端框架MVC和MVVM的理:https://blog.csdn.net/qq_29722281/article/details/99717680
2:阮一峰讲解MVC\MVP以及MVVM:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
3:其中介绍到了vue的具体解析实现流程:https://www.codercto.com/a/33262.html

前端面试--谈谈你对MVVM的理解?如何回答相关推荐

  1. MVVM是什么?谈谈你对MVVM的理解?

    MVVM是什么?谈谈你对MVVM的理解? 我的理解MVVM它就是一种前端开发的架构模式,作用就是为了让前端业务逻辑和HTML代码更加分离.它的核心思想就是把每个页面分成了M(Model数据模型).V( ...

  2. web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)

    系列文章目录 内容 参考链接 Vue基本使用 Vue的基本使用(一文掌握Vue最基础的知识点) Vue通信和高级特性 Vue组件间的通信及高级特性(多种组件间的通信.自定义v-model.nextTi ...

  3. 前端面试精华帖:100个问题如果你回答出80个,那么请把你的简历给我

    半年时间,几千人参与,精选大厂前端面试高频 100 题,这就是「 壹题 」. 在 2019 年 1 月 21 日这天,「 壹题 」项目正式开始,在这之后每个工作日都会出一道高频面试题,主要涵盖阿里.腾 ...

  4. final关键字_Java面试-谈谈对final关键字的理解

    一.final简介 final意为最终的,不可变的. 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量). final修饰的类不可被继承 将一个类声明为final,其中 ...

  5. [Vue][面试]谈谈你对MVC、MVP和MVVM的理解

    谈谈你对MVC.MVP和MVVM的理解 答题思路:此题涉及知识点很多,很难说清楚,说透彻,因为MVC,MVP这些我们前端程序员自己甚至都没用过.但是恰恰反映了前端这些年从无到有, 从有到优的变迁过程, ...

  6. 谈谈对MVVM的理解

    谈谈对MVVM的理解 什么是MVVM 不管是MVC,MVP,或者MVVM,都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式 ...

  7. 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?

    04谈谈你对分布式的理解,为什么引入分布式? 引言 刚刚毕业第一份工作,没接触过分布式微服务相关的知识,后来换工作才了解到这些,面试官看了我简历里写了分布式相关,就开始揪住这个问题问,虽然一知半解地说 ...

  8. 深入理解前端跨域问题的解决方案——前端面试

    深入理解前端跨域问题的解决方案--前端面试 参考文章: (1)深入理解前端跨域问题的解决方案--前端面试 (2)https://www.cnblogs.com/greatluoluo/p/627346 ...

  9. 【面试常问】谈谈你对多态的理解

    谈谈你对多态的理解 在面试中如果问到这个问题,我们应该咋么回答呢?我就写一下我的看法如有错误还请个位指正! 文章目录 谈谈你对多态的理解 什么是多态? 多态的实现 向上转型 向下转型 多态的好处 什么 ...

最新文章

  1. [Offer收割]编程练习赛63
  2. 若依前后端分离版怎样根据数据库生成代码并快速实现某业务的增删改查
  3. if break语句_8、嵌套if语句、switch语句
  4. 使用 Boost.MPI 的 gather() 的示例
  5. [postgresql] postgresql 安装
  6. 启动“powershell.exe”时出现错误 0x8007000
  7. 简单的网络图片加载工具类
  8. Reactive Extensions 相见恨晚的Rx.Net
  9. 拿了年终奖后,发现自己又拖后腿了?对不起,可能事实并没有那么糟糕...
  10. wowbl最优势的服务器,CWOW中BL为什么远远多于LM一个新手之见
  11. 设计模式之禅--思维导图
  12. 只怪自己当时年纪太小,一心只看那只泼猴了
  13. Eclipse中,查找文件后(使用ctrl shift R/T),如何关联到文件所在目录(查看文件所在的目录结构)。
  14. vim搜索设置高亮:set hlsearch
  15. 大数据之Kafka介绍
  16. 编程原则:戒虚而务实,谋定而后动
  17. 每天一个命令:ps命令
  18. MapReduce论文中文版--The Google File System
  19. 【云原生】-Docker快速搭建免费的WordPress博客平台
  20. 腾讯、阿里校招面试真题-常见经典题

热门文章

  1. [转载]playframework的视频短片
  2. 跨境电商如何做好客户沟通?
  3. wpf图表-Visifire使用教程分享
  4. 树莓派python编程入门与实战解压密码_树莓派Python编程入门与实战
  5. 如何评价亚马逊 Kindle Oasis 电子书阅读器?
  6. 软件提交到国外的下载站的几点操作和想法
  7. 示波器如何测量电源纹波
  8. 粒子群算法python_python实现粒子群算法
  9. S32K144之时钟
  10. RPA下基层·社区医疗RPA丨居民医疗档案签约机器人