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