MVVM最早由微軟提出來,它借鑒了桌面應用程序的MVC思想,在前端頁面中,把Model用純JavaScript對象表示,View負責顯示,兩者做到了最大限度的分離,把Model和View關聯起來的就是ViewModel。
ViewModel負責把Model的數據同步到View顯示出來,還負責把View的修改同步回Model
View 和 Model 之間的同步工作完全是自動的,無需人為干涉(由viewModel完成)
因此開發者只需關注業務邏輯,不需要手動操作DOM, 不需要關注數據狀態的同步問題,復雜的數據狀態維護完全由 MVVM 來統一管理。
(2).MVVM模式的優點:
1、低耦合:MVVM模式中,數據是獨立於UI的,ViewModel只負責處理和提供數據,UI想怎么處理數據都由UI自己決定,ViewModel不涉及任何和UI相關的事,即使控件改變(input換成p),ViewModel幾乎不需要更改任何代碼,專注自己的數據處理就可以了
2.自動同步數據:ViewModel通過雙向數據綁定把View層和Model層連接了起來,View和Model這兩者可以自動同步。程序員不需要手動操作DOM, 不需要關注數據狀態的同步問題,MVVM 統一管理了復雜的數據狀態維護
3、可重用性:你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。
4、獨立開發:開發人員可以專注於業務邏輯和數據的開發(ViewModel),設計人員可以專注於頁面設計。
5、可測試:ViewModel里面是數據和業務邏輯,View中關注的是UI,這樣的做測試是很方便的,完全沒有彼此的依賴,不管是UI的單元測試還是業務邏輯的單元測試,都是低耦合的
(3).MVVM 和 MVC 的區別:
mvc 和 mvvm 其實區別並不大。都是一種設計思想,主要區別如下:
1.mvc 中 Controller演變成 mvvm 中的 viewModel
2.mvvm 通過數據來驅動視圖層的顯示而不是節點操作。
3.mvc中Model和View是可以直接打交道的,造成Model層和View層之間的耦合度高。而mvvm中Model和View不直接交互,而是通過中間橋梁ViewModel來同步
4.mvvm主要解決了:mvc中大量的DOM 操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗。
