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簡單多了!