天天看點

MVVM和MVC的差別,以及MVVM的缺點

MVVM和MVC的差別

MVC和MVVM的差別其實并不大。都是一種設計思想。

主要就是MVC中Controller演變成MVVM中的viewModel。

MVVM主要解決了MVC中大量的DOM操作使頁面渲染性能降低,加載速度變慢,影響使用者體驗。

當和Model頻繁發生變化,開發者需要主動更新到View。

MVVM:是Model-View-ViewModel的簡寫

MVVM和MVC的差別,以及MVVM的缺點

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也會很大,雖然使用友善了也很容易保證資料的一緻性,但是長期持有,不釋放記憶體就造成話費更多的記憶體。