MVVM、MVC有什么区别
首先先搞懂MVVC和MVC是什么
MVVM: Model View ViewModel
MVC: Model View Controller
MVVM和MVC的M、V部分是一样的,C指的是页面业务逻辑,使用MVC可以将model(数据)与view(视图)的代码分离,但是MVC是单向通信,也就是将Model渲染到View上,其中必须通过controller来承上启下。顺序是model->controller->view
MVVM中的ViewModel有什么作用
- DOM Listenters:监听页面的变化,当view页面发生改变时触发事件更新model中的data
- Data Bindings:数据model对view的绑定,当model发生变化时会自动渲染view页面
- 两大方向:data数据绑定、dom事件监听,同时实现时就称为数据的双向绑定
- ViewModel并没有完全取代Controller
- ViewMoedl将Controller中的数据渲染功能抽离了
MVVM的优势
- 低耦合:
View
可以独立于Model
变化和修改,一个ViewModel
可以绑定到不同的View
上,当View
变化的时候Model
可以不变,当Model
变化的时候View
也可以不变。 - 可重用性: 可以把一些视图逻辑放在一个
ViewModel
里面,让很多View
重用这段视图逻辑。 - 独立开发: 开发人员可以专注于业务逻辑和数据的开发,设计人员可以专注于页面的设计。
- 可测试:界面素来是比较难于测试的,而现在测试可以针对
ViewModel
来写。
MVC的区别
MVC和MVVM的区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用。
答案中包含自己的理解和掘金高赞回答,后续如果觉得有更好的回答会再更新。