MVVM ?

什么是MVVM?

MVVM是Model-View-ViewModel的缩写。它借鉴了桌面应用程序的MVC思想,在前端页面中,把Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离,把Model和View关联起来的就是ViewModel,ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。

ViewMode如何编写?

需要用JavaScript编写一个通用的ViewModel,这样就可以复用整个MVVM模型。

MVVM的设计思想:关注Model的变化,让MVVM框架去自动更新DOM的状态,从而把开发者从操作DOM的繁琐步骤中解脱出来。

单向绑定:把Model绑定到View,用JavaScript代码更新Model时,View就会自动更新。

定义JavaScript对象作为Model,并将Model的两个属性绑定到DOM节点上
经过MVVM框架的自动转换,浏览器直接显示Model数据

来而不往非礼也,有单向绑定,就有双向绑定。如果用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定。

以填写表单为例,当用户填写表单时,View的状态就被更新了,如果此时MVVM框架可以自动更新Model的状态,那就相当于把Model和View做了双向绑定:

在浏览器中,当用户修改了表单的内容,绑定的Model会自动更新

除了简单的单向绑定和双向绑定,MVVM还有一个重要的用途,就是让Model和DOM的结构保持同步。。。

集成API实现用户能使用的Web应用,涉及具体问题:

1、用户的TODO数据从后台读取;

2、对TODO的增删改必须同步到服务器后端;

3、用户在View上必须能够修改TODO。

第1个和第2个问题涉及API,只要实现合适的API接口,就可以在MVVM内部更新Model的同事,通过API把数据更新反映到服务器端,这样,用户数据就保存到了服务器端,下次打开页面时就可以读取TODO列表。

Getting started
Add New Todo

 

Operation Add New Todo is done successfully!!!

MVVM的适用范围:

MVVM最大的优势是编写前端逻辑非常复杂的页面,尤其是需要大量DOM操作的逻辑,利用MVVM可以极大地简化前端页面的逻辑。

但是MVVM不是万能的,它的目的是为了解决复杂的前端逻辑。对于以展示逻辑为主的页面,例如,新闻、博客、文档等,不能使用MVVM展示数据,因为这些页面需要被搜索引擎索引,而搜索引擎无法获取使用MVVM并通过API加载的数据。

故需要SEO(Search Engine Optimization)的页面,不能使用MVVM展示数据。不需要SEO的页面,如果前端逻辑复杂,就适合使用MVVM展示数据,例如,工具类页面,复杂的表单页面,用户登录后才能操作的页面等等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注