MVC,MVP,MVVM是三種常見的架構模式,它通過分離關注點來改進代碼組織方式。不同於設計模式(Design Pattern),只是為了解決一類問題而總結出的抽象方法,一種架構模式往往能使用多種設計模式。
MVC模式是MVP,MVVM模式的基礎,這兩種模式更像是MVC模式的優化改良版,他們三個的 MV 即 Model,view 相同,不同的是MV之間的紐帶部分。本文主要介紹MVC與MVVM的應用與區別,因為MVP好像不是很常用。
一、什么是 MVC ?
后端的開發思想——單向通信
- Model:數據層(存數據、改數據)
- View:視圖層(頁面展示和dom的操作)
- Controller:控制視圖層和數據層的關聯,主要通過監聽dom事件
分層的目的:讓彼此的職責分開。Controller 是 Model 和 View 的協調者,View 和 Model 不直接聯系,基本都是單向聯系,必須通過 Controller 來承上啟下。
MVC允許在不改變視圖的情況下改變視圖對用戶輸入的響應方式,用戶對View的操作交給了Controller處理,在Controller中響應View的事件調用Model的接口對數據進行操作,一旦Model發生變化便通知相關視圖進行更新。
二、什么是 MVVM ?
前端的開發思想——雙向綁定
- Model:是data里數據(通過ajax等獲取的數據)
- View :視圖層
- VM (ViewModel):new vue 中 new出來的對象就是VM,是V-M的調度者,提供了數據的雙向綁定
- 耦合低,是真的低,view和model完全分離
- 維護性高,易維護,上手快
- 雙向綁定:視圖發生變化數據自動同步,數據發生變化視圖也自動同步
- 減少了dom的操作,可以更多的關注業務邏輯
四、MVVM與MVC的區別
MVC 和 MVVM 其實區別並不大,都是一種設計思想。主要就是MVC 中 Controller 演變成 MVVM 中的 viewModel。MVVM 主要解決了 MVC 中大量的 DOM 操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗
MVVM 實現了View和Model的自動同步,也就是當Model的屬性改變時,我們不用再自己手動操作Dom元素,來改變View的顯示,而是改變屬性后該屬性對應View層顯示會自動改變。非常的神奇~
整體看來,MVVM比MVC精簡很多,不僅簡化了業務與界面的依賴,還解決了數據頻繁更新的問題,不用再用選擇器操作DOM元素。因為在MVVM中,View不知道Model的存在,Model和ViewModel也觀察不到View,這種低耦合模式提高代碼的可重用性。
