MVVM和MVC的區別 前端必看

2021-10-06 05:14:41 字數 1497 閱讀 2083

mvc模式:

m:model(資料模型),用於存放資料

v:view(檢視),也就是使用者介面

c:controller是model和view的協調者,controller把model中的資料拿過來給view使用。controller可以直接與model和view進行通訊,而view不能與controller直接通訊。,當有資料更新時,model也要與controller進行通訊,這個時候就要用notification和kvo,這個方式就像發廣播一樣,model發訊號,controller設定接收監聽訊號,當有資料更新是就發訊號給controller,model和view不能直接通訊,這樣違背mvc設計原則。view與controller通訊需要利用**協議的方式,controller可以直接根據model決定view的展示。view如果接受響應事件則通過delegate,target-action,block等方式告訴controller的狀態變化。controller進行業務的處理,然後再控制view的展示。

mvc:

controller負責將model的資料用view顯示出來

使用者操作》 view (負責接受使用者的輸入操作)>controller(業務邏輯處理)>model(資料持久化)>view(將結果通過view反饋給使用者)

缺點:1.所有業務邏輯都在controller裡操作,邏輯複雜且不利於維護,

2.大量的dom 操作使頁面渲染效能降低,載入速度變慢,影響使用者體驗。

3.當 model 頻繁發生變化,需要主動更新到view ;當使用者的操作導致model發生變化,同樣需要將變化的資料同步到model中, 這樣的工作不僅繁瑣,而且很難維護複雜多變的資料狀態。

由於mvc模式的缺陷,mvc的變種模式衍生出mvvm模式

mvvm模式:

核心是提供對view 和 viewmodel 的雙向資料繫結,view和model之間並沒有直接的聯絡,而是通過viewmodel進行互動,view的變動,自動反映在viewmodel上,反之亦然,這樣就保證檢視和資料的一致性。

m:movel(資料模型)

v:view

vm:viewmodel 是乙個同步view 和 model的物件。view 和 model 之間並沒有直接的聯絡,而是通過viewmodel進行互動。viewmodel 通過雙向資料繫結把 view 層和 model 層連線了起來,而view 和 model 之間的同步工作完全是自動的,無需人為干涉,因此開發者只需關注業務邏輯,不需要手動操作dom, 不需要關注資料狀態的同步問題,複雜的資料狀態維護完全由 mvvm 來統一管理。

vm雙向繫結:在 mvvm 框架中,view(檢視) 和 model(資料) 是不可以直接通訊的,在它們之間存在著 viewmodel 這個中間介充當著觀察者的角色。當使用者操作 view(檢視),viewmodel 感知到變化,然後通知 model 發生相應改變;反之當 model(資料) 發生改變,viewmodel 也能感知到變化,使 view 作出相應更新。這個一來一回的過程就是我們所熟知的雙向繫結。

MVC和MVVM的區別

mvc和mvvm的區別 現在是市面上使用mvvm模型越來越多,相關的前端框架的選擇也相應增多。那麼什麼是mvvm模型,它和傳統mvc模型有什麼區別,接下來我們來總結 一下。mvvm即model view viewmodel的簡寫。即模型 檢視 檢視模型。模型 model 指的是後端傳遞的資料。檢視 ...

MVVM和MVC的區別

mvvm model view viewmodel的簡寫。即模型 檢視 檢視模型。模型 model 指的是後端傳遞的資料。檢視 view 指的是所看到的頁面。檢視模型 viewmodel 是mvvm模式的核心,它是連線view和model的橋梁。它有兩個方向 一是將模型 model 轉化成檢視 vi...

MVC和MVVM的區別

簡單來說就是通過controller的控制去操作model層的資料,並且返回給view層展示。在 mvvm 架構中,引入了viewmodel的概念。mvvm 的出現促進了前端開發與後端業務邏輯的分離,極大地提高了前端開發效率,mvvm 的核心是 viewmodel 層,它就像是乙個中轉站 value...