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简单多了!