對於MVVM的理解

%就是我發表於2018-08-11

model:資料模型

view:檢視層

modelview:檢視資料層

viewmodel可以把model和view關聯起來,ViewModel負責把Model的資料同步到View顯示出來,還負責把View的修改同步回Model。

如果我們使用MVVM框架來實現同樣的功能,我們首先並不關心DOM的結構,而是關心資料如何儲存(只需關心資料和業務邏輯)。最簡單的資料儲存方式是使用JavaScript物件。

var person = {
    name: 'Bart',
    age: 12
};複製程式碼

我們把變數person看作Model,把HTML某些DOM節點看作View,並假定它們之間被關聯起來了。

要把顯示的name從Bart改為Homer,把顯示的age從12改為51,我們並不操作DOM,而是直接修改JavaScript物件:

Hello, Bart!

You are 12.

person.name = 'Homer'; person.age = 51; 

執行上面的程式碼,我們驚訝地發現,改變JavaScript物件的狀態,會導致DOM結構作出對應的變化!這讓我們的關注點從如何操作DOM變成了如何更新JavaScript物件的狀態,而操作JavaScript物件比DOM簡單多了!

這就是MVVM的設計思想:關注Model的變化,讓MVVM框架去自動更新DOM的狀態(而且框架採用特殊演算法,使DOM操作更有效率),從而把開發者從操作DOM的繁瑣步驟中解脫出來!


相關文章