理解 MVC 和 MVVM


  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的調度者,提供了數據的雙向綁定
 在MVVM架構下,View 和 Model 之間也不直接聯系,而是通過VM進行交互,可以說 VM 是連接 View 和 Model 之間的橋梁,它能監聽到數據的變化,然后通知視圖進行自動更新,而當用戶操作視圖時,它也能監聽到視圖的變化,然后通知數據做相應改動,這實際上就實現了數據的雙向綁定。
 
優點:
  • 耦合低,是真的低,view和model完全分離
  • 維護性高,易維護,上手快
  • 雙向綁定:視圖發生變化數據自動同步,數據發生變化視圖也自動同步
  • 減少了dom的操作,可以更多的關注業務邏輯
 
  三、圖理解
 接下來我們通過一張圖更好的理解:轉自https://www.cnblogs.com/wasbg/p/13297401.html

 

  四、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,這種低耦合模式提高代碼的可重用性。

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM