对于MVVM的理解

743 阅读1分钟

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的繁琐步骤中解脱出来!