MVVM与MVC的区别

147 阅读2分钟

MVVM、MVC有什么区别

首先先搞懂MVVC和MVC是什么

image.png

  • 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有什么作用

image.png

  • 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实现的是业务逻辑组件的重用。

答案中包含自己的理解和掘金高赞回答,后续如果觉得有更好的回答会再更新。