MVVM和MVC的區別
MVC和MVVM的區別其實並不大。都是一種設計思想。
主要就是MVC中Controller演變成MVVM中的viewModel。
MVVM主要解決了MVC中大量的DOM操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗。
當和Model頻繁發生變化,開發者需要主動更新到View。
MVVM:是Model-View-ViewModel的簡寫
M:對應於MVC的M
V:對應於MVC的V
VM:ViewModel,是把MVC裏的controller的數據加載,加工功能分離出來
MVVM是Web前端一種非常流行的開發模式,
利用MVVM可以使我們的代碼更加專注於處理業務邏輯而不是去關心DOM操作。
目前著名的MVVM框架有VUE,avalon,angular等
MVVM設計模式的優點
1. 雙向綁定技術,當Model變化時,View-Model會自動更新,View也會自動變化。很好的做到數據的一致性
2. 由於控制器的功能大都移動到View上處理,大大的對控制器進行了瘦身
3. View的功能進一步強化,具有控制的部分功能,
若想無限增強它的功能,甚至控制器的全部功能幾乎都可以遷移到各個View上
(不過這樣不可取,那樣View幹不了屬於它職責範圍內的事情)。
View可以像控制器一樣具有自己都View-Model
4. 可以對View或ViewController的數據處理部分抽象出來一個函數處理model。
這樣它們專職頁面佈局和頁面跳轉,它們必然更一步的簡化。
MVVM設計模式的缺點
1. 數據綁定也使得bug很難被調試。比如你看到頁面異常了,有可能是你的View的代碼有bug,也可能是你的model的代碼有問題。數據綁定使得一個位置的Bug被快速傳遞到別的位置,要定位原始出問題的地方就變得不那麼容易了。
2. 數據雙向綁定不利於代碼重用。客戶端開發最常用的是View,但是數據雙向綁定技術,讓你在一個View都綁定了一個model,不同的模塊model都不同。那就不能簡單重用view了
3. 一個大的模塊中model也會很大,雖然使用方便了也很容易保證數據的一致性,但是長期持有,不釋放內存就造成話費更多的內存。