MVC
前端的 MVC 和後端類似,具有 View、Controller 和 Model。
Model:負責保存應用數據,與後端數據進行同步。
Controller:負責業務邏輯。
View:負責視圖展示,將 Model 中的數據可視化出來。
這樣的模型,在理論上是可行的。但往往在實際開發中,並不會這樣操作。因爲開發過程並不靈活。
例如,一個小小的事件操作,都必須經過這樣一個過程,那麼開發就不再便捷了。
MVP
既然有缺陷,就會有變革。在前端框架模式的演進中,似乎少了 MVP 這種模型,這是因爲 Angular 早早的將 MVVM 框架模式帶入了前端。MVP 模式雖然在前端開發中並不常見,但是在原生安卓開發中,開發者還是會考慮到它的。
MVP 和 MVC 很接近,P 指的是 Presenter,Presenter 可以理解爲一箇中間人,它負責着 View 和 Model 之間的數據流動,防止 View 和 Model 之間直接交流。我們可以看一下圖示:
我們可以看到,Presenter 負責和 View 進行雙向交互,還和 Model 進行雙向交互。
這種交互方式,相較於 MVC 來說少了一些靈活,因爲現在 View 和 Model 不能相互通信了。
好處是它分離了 View 和 Model。
缺點是應用逐漸變大之後,導致 Presenter 的體積增大,難以維護。
MVVM
ViewModel 通過實現一套數據響應式機制自動響應 Model 中數據變化,同時 ViewModel 會實現一套更新策略自動將數據變化轉換爲視圖更新,通過事件監聽響應 View 中用戶交互修改 Model 中的數據。
這樣在 ViewModel 中就減少了大量 DOM 操作代碼。
MVVM 在保持 View 和 Model 松耦合的同時,還減少了維護它們關係的代碼,使用戶專注於業務邏輯,兼顧開發效率和可維護性。
總結
- 這三者都是框架模式,它們設計的目的都是爲了解決 Model 和 View 的耦合問題。
-
MVP 是 MVC 的進化版,Presenter 作爲中間層負責 View 和 Model 之間的通信,解決了兩者的耦合問題,但 P 層過於臃腫會導致維護問題。
-
MVVM 模式在前端領域有廣泛應用,它不僅解決了 View 和 Model 之間的耦合問題,還同時解決了維護兩者映射關係的大量繁雜代碼和 DOM 操縱代碼,在提高開發效率、可讀性同時還保持了優越的性能。