MVC與MVVM的理解

2021-09-29 10:46:00 字數 1440 閱讀 7084

mvc,mvp,mvvm是三種常見的前端架構模式,通過分離關注點來改進**組織方式。mvc模式是mvp,mvvm模式的基礎,這兩種模式更像是mvc模式的優化改良版,他們三個的mv即model,view都是相同的,不同的是mv之間的橋梁連線部分。本文是對的乙個總結。

mvc允許在不改變檢視的情況下改變檢視對使用者輸入的響應方式,使用者對view的操作交給了controller處理,在controller中響應view的事件呼叫model的介面對資料進行操作,一旦model發生變化便通知相關檢視view進行更新。

接受使用者指令時,mvc 可以分成兩種方式。一種是通過 view 接受輸入,傳遞給 controller。另一種是直接通過controller接受指令。此處只畫了第一種情況。

mvp 模式將 controller 改名為 presenter,同時改變了通訊方向。

與mvc最大的區別就是view和model層完全解耦,不在有依賴關係,而是通過presenter做橋梁,用於操作view層發出的事件傳遞到presenter層中,presenter層去操作model層,並且將資料返回給view層,整個過程中view層和model層完全沒有聯絡。

mvvm 模式將 presenter 改名為 viewmodel,基本上與 mvp 模式完全一致。唯一的區別是,它採用雙向繫結(data-binding),view的變動,自動反映在 viewmodel,反之亦然。

這裡我們拿典型的mvvm模式的代表,vue,來舉例:

逆轉訊息

data: ,

methods:

}})

這裡的html部分相當於view層,可以看到這裡的view通過通過模板語法來宣告式的將資料渲染進dom元素,當viewmodel對model進行更新時,通過資料繫結更新到view。

vue例項中的data相當於model層,而viewmodel層的核心是vue中的雙向資料繫結,即model變化時view可以實時更新,view變化也能讓model發生變化。

整體看來,mvvm比mvc精簡很多,不僅簡化了業務與介面的依賴,還解決了資料頻繁更新的問題,不用再用選擇器操作dom元素。因為在mvvm中,view不知道model的存在,model和viewmodel也觀察不到view,這種低耦合模式提高**的可重用性。

本段出自

MVVM的理解,及MVVM與MVC的區別

model 很簡單,就是業務邏輯相關的資料物件,通常從資料庫對映而來,我們可以說是與資料庫對應的model。view 也很簡單,就是展現出來的使用者介面。基本上,絕大多數軟體所做的工作無非就是從資料儲存中讀出資料,展現到使用者介面上,然後從使用者介面接收輸入,寫入到資料儲存裡面去。所以,對於資料儲存...

mvc和mvvm模式的理解與區別

幾乎所有的專案都在做這麼一件事 將資料展示給使用者看,並處理使用者對介面的操作。mvc的思想 一句話描述就是controller負責將model的資料用view顯示出來,換句話說就是在controller裡面把model的資料賦值給view,比如在controller中寫document.getel...

MVC與MVP以及MVVM的簡介與理解

一 先來說一說我們ios中通常所理解的mvc 模型 檢視 控制器 model view controller,mvc 是xerox parc在20世紀80年代為程式語言smalltalk 80發明的一種軟體設計模式,至今已廣泛應用於使用者互動應用程式中。在 ios開發中 mvc的機制被使用的淋漓盡致...