MVVM和MVP的定义,以及它们优缺点


MVVM定义🏳️🏳️

MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。
【模型】指的是后端传递的数据。
【视图】指的是所看到的页面。
【视图模型】mvvm模式的核心,它是连接view和model的桥梁。
它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定 。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听 。这两个方向都实现的,我们称之为数据的双向绑定。总结:在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。MVVM流程图如下:

MVVM框架-VUE介绍🎌🎌:

🏹MVVM还有一种模式model-view-binder,主要用来简化用户界面的事件驱动程序设计

MVVM可以分成四部分并且这四部分和VUE有对应关系:

模型(Model):是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心) 模型(Model):Vue的实例中的那些属性 data,methods, computed 等等
视图(View):是用户在屏幕上看到的结构、布局和外观(UI) 视图(View):对应真实的html和css
视图模型(VM):暴露公共属性和命令的视图抽象。让视图和数据二者进行通信,靠的绑定器 视图模型(VM):对应Vue的模板语法
绑定器(binder):声明性数据和命令绑定 绑定器:对应v-bind, v-model ,@click, :prop等绑定数据语法

🏹在一个.vue文件中,我们会看到3部分<template /><script /> <style />

  • <template /> 负责视图模型和绑定器
  • <style /> 负责视图的CSS
  • <script /> 中定义的Vue实例负责模型的数据管理和绑定器的逻辑

🏹ViewModel-View阶段

视图模型转化为视图,也即Vue中的模板语法转化为实际的HTML和CSS,这个部分主要由Vue自动实现,我们开发者主要处理的是Model-ViewModel阶段。

Model-ViewModel阶段

这个阶段就是我们实例化Vue对象,添加data,methods等操作,以及将数据绑定到模板上。

Model:定义data函数管理数据count,以及定义method中add函数控制count数据的变更

ViewModel:是抽象语法,主要是Vue的模板语法,绑定数据,之后Vue会将其转化为真实的HTML

由于,ViewModel和Model主要是绑定关系,也即是数据和视图是绑定的,你什么样的数据就决定了什么样的视图,所以我们一般也把Vue称为数据驱动框架。

所以很多时候,只要知道数据和ViewModel的关系,也就知道UI的样子了,这个时候,我们只需操作数据的结构,也就操作了视图。

MVVM优点与缺点🎌🎌:

优点

  • 双向绑定时,当Model变化时,View-Model会自动更新,View也会自动变化。
  • View的功能进一步的强化,具有控制的部分功能。
  • 控制器的功能大部分移动到View上处理,大大的对控制器进行了瘦身。

缺点

  • 数据绑定使得 Bug 很难被调试。
  • 数据双向绑定不利于代码重用。
  • 大的模块,model很大,不利于内存的释放。

MVP定义🏳️🏳️:

### MVP定义🎌🎌: Model-View-Presenter:是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。

JQuery-MVP设计模式🎌🎌:

  • M(model):模型层(数据层)(弱)
  • V(view):视图层,页面上的DOM展示
  • P(presenter):控制器(最核心的一层),视图和模型层的中转站,大量代码做DOM的操作,模型层非常弱。视图发生改变点击提交时控制器会去执行,控制器里负责了所有的业务逻辑,控制器可以去调模型层去发Ajax请求,控制器通过DOM操作再改变视图层。
  • 在大型项目中,JQuery编写的百分之七八十以上的代码都在操作DOM。JQuery是面向DOM在做开发。

MVP优点与缺点🎌🎌:

优点

  • 降低耦合
  • 模块职责划分明显
  • 利于测试驱动开发
  • 代码复用
  • 隐藏数据
  • 代码灵活性

缺点
视图的渲染放在Presenter中,所以视图和Presenter的交互会过于频繁。如果Presenter过多地渲染视图,往往会使得它与特定的视图的联系过于紧密。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM