1、从了解MVC开始
几乎所有的项目都在做这么一件事:将数据展示给用户看,并处理用户对界面的操作。
MVC的思想:一句话描述就是Controller负责将Model的数据用View显示出来,换句话说就是在Controller里面把Model的数据赋值给View,比如在Controller中写document.getElementById("box").innerHTML = data.title
M(模型)
Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
V(视图)
View(视图):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
C(控制器)
Controller(控制器):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
总的来说,View是负责页面的绘制、Model是负责数据的管理、而Controller是负责这俩者之间的交互,也就相当于协调者
2、现在再说说来MVVM
与我们之前分析过MVC工作模式一样,M是存取数据、V是数据的显示,那么VM呢?在MVC的时代项目的数据还是比较简单的,没有现在那么复杂。我们理所应当的,将“解析数据”这个问题就交给C来完成了,也就是类似document.getElementById("box").innerHTML = data.title
这种的操作。但是现在数据变的复杂了,如果继续将这些操作放到了Controller里面,那么Controller就将变得相当臃肿。还有相当重要的一点:Controller被设计出来并不是处理 数据解析 。
Controller的使命
- 管理自己的生命周期;
- 处理Controller之间的跳转;
- 实现Controller容器。
这里面根本没有“数据解析”这一项,所以显然,数据解析也不应该由Controller来完成。那么
MVC就需要升级了,在MVC的基础上新增了ViewModel,弱化了Controller的负担。所以MVVM就这样诞生了!
MVC和MVVM的区别
- MVC和MVVM的区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller它还是存在,在其它视图操作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用。
- MVVM通过数据来显示视图层而不是节点操作,VM通过数据双向绑定来实现的,而在像C那样通过DOM操作实现。
- MVVM解决了MVC中大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验
- MVVM的优势在于不用亲自操作DOM, 数据是响应式的, 一旦数据变化, 自动更新界面
以上就是我对mvc和mvvm的理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟。