(面试常问的)MVVM模型的详细讲解

135 阅读3分钟

背景

前端在使用JavaScript操作DOM的方式上,经历了若干个阶段的发展。

  • 第一阶段,直接用JavaScript操作DOM节点,使用浏览器提供的原生API
  • 第二阶段,由于原生API操作起来十分繁琐,还要考虑浏览器兼容性,jQuery很好的解决了上述的这些问题的成为当时的主流
  • 第三阶段,MVC模式,需要服务器端配合,JavaScript可以在前端修改服务器渲染后的数据。
  • 第四阶段,随着前端页面越来越复杂,用户对于交互性要求也越来越高,仅仅用jQuery是远远不够的,MVVM模型应运而生。

MVVM最早由微软提出来,它借鉴了桌面应用程序的MVC思想,在前端页面中,把Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离

概念

响应式,双向数据绑定,即MVVM。是指数据层(Model)-视图层(View)-数据视图(ViewModel)的响应式框架。它包括:

  • 修改View层,Model对应数据发生变化
  • Model数据变化,不需要查找DOM,直接更新View

MVVM是一种软件的体系结构

MVVMModel-View-ViewModel的简称,是目前非常流行的架构模式;通常情况下,我们也经常称Vue是一个MVVM的框架。Vue官方其实有说明,Vue虽然并没有完全遵守MVVM的模型,但是整个设计是受到它的启发的。

今天我们主要讲MVVM模式,这也是面试中最常被问到的模式。

MVVM的全称是Model-View-ViewModel。

  • Model(模型):代表真实状态的内容,即数据访问层(包含数据实体以及数据实体的操作)。是用于封装和应用程序的业务逻辑相关的数据以及对数据的处理方法。我们可以粗劣的理解为数据内容

  • View(视图):是视图层,主要负责数据的展示,用户能在屏幕上看到的结构、布局和外观,负责数据显示以及交互方面。我们也可以理解为DOM元素。

  • ViewModel(视图模型):层主要负责连接View层(视图)和Model层(数据),进行数据与DOM 的绑定。当Model发生变化,ViewModel就会自动更新;ViewModel变化,Model也会更新。

在vue中,我们可以把MVVM模式中的view层理解成我们编写的template模板,而model理解成我们的script里里面请求的数据。而ViewModel,就可以理解成我的vue底层帮我们做的数据与模板的绑定,或者是订阅者阅读者模式,而这里面又涉及到vue的响应式原理和Object.defineProperty有关的东西,这里就不细讲了。

image.png

总结

在VUE中:

  • MVVM模式中的view层理解为template模板-DOM
  • model理解成我们的script里请求的数据-Data
  • ViewModel,就可以理解成我的vue底层帮我们做的数据与模板的绑定,或者是订阅者阅读者模式

写在最后

伙伴们,如果你觉得我写的文章对你有帮助就给zayyo点一个赞👍或者关注➕都是对我最大的支持。当然你也可以加我微信:IsZhangjianhao,邀你进我的前端学习交流群,一起学习前端,成为更优秀的工程师~