mvc、mvvm是什么?有什么区别?

69 阅读3分钟
MVC是什么?

MVC(Model-View-Controller)是一种设计模式,它将应用划分为3个部分:M是指模型,V是视图,C则是控制器。

  • M即model,模型层主要负责数据逻辑部分,按照功能将代码分块;
  • V即view,视图层负责数据显示的部分;
  • C即controller,控制层主要负责数据交互的部分。 MVC开发模式可以简化为以下几步:
    1.model层与服务器进行交互,从服务器请求数据,得到数据后进行封装。
    2.controller层调用model层的数据,然后进行逻辑处理,然后model层接收controller层返回的数据。
    3.model层对view层进行监听,让视图进行更新,视图更新完毕后通知model层。

MVVM模式的优点是可以减少手动编写的代码量,并提高开发效率。MVVM模式的缺点是需要额外的学习成本,以及在一些简单的应用程序中可能会增加不必要的复杂性。

应用场景:

MVC模式适用于简单的应用程序,例如博客、新闻网站等,它能够将应用程序的功能进行清晰的分离,并提高代码的可维护性和重用性。

什么是MVVM?

MVVM(Model-View-ViewModel)是一种设计模式,其本质上就是MVC的改进版,它将视图和模型之间的数据绑定自动化,减少手动编写的代码量。其中,ViewModel充当着视图和模型之间的桥梁,它将模型的数据绑定到视图上,并监听视图的变化,将用户的输入反映到模型中。

  • Model 层: 数据模型层通过 Ajaxfetch 等 API 完成客户端和服务端业务模型的同步。
  • View 层: 视图层作为视图模板存在,其实View 就是⼀个动态模板。
  • ViewModel 层: 视图模型层负责暴露数据给 View 层,并对 View 层中的数据绑定声明、 指令声明、 事件绑定声明, 进行实际的业务逻辑实现。
优点:
  1. 实现了视图(View)和模型(Model)的分离,降低代码耦合、提⾼视图或逻辑的复⽤性
  2. 提⾼了可测试性:ViewModel 的存在可以帮助开发者更好地编写测试代码
  3. 能⾃动更新 DOM:利⽤双向绑定,数据更新后视图⾃动更新,让开发者从繁琐的⼿动操作 DOM 中解放出来
缺点:
  1. Bug 难被调试:因为使⽤了双向绑定的模式,当我们看到界⾯发生异常了,有可能是 View 的代码产生的 Bug,也有可能是Model 代码的问题。数据绑定使得⼀个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地⽅就变得不那么容易了

可采用的调试方案: (1) 注释掉一段代码, 确定代码的位置 (2) debugger 打断点 或者 console 进行调试

  1. 在⼀个⼤的模块中 Model 也会很⼤,虽然使⽤上来说⽅便了,但如果⻓期持有不释放内存,就会造成更多的内存消耗占用的是浏览器的内存
应用场景

MVVM模式适用于需要大量数据绑定的复杂应用程序,例如电商网站、社交网络等,它能够减少手动编写的代码量,并提高开发效率。

MVVM与MVC的区别
  1. 视图与模型之间的关系不同:MVC中,视图和模型之间是通过控制器进行交互的,而在MVVM中,视图和模型是通过ViewModel进行交互的。
  2. 数据绑定方式不同:MVC中,视图和模型之间的数据交互需要手动编写代码来实现,而在MVVM中,ViewModel将模型的数据绑定到视图上,实现了自动化的数据绑定。
  3. 测试方式不同:在MVC中,控制器的测试相对容易,而在MVVM中,ViewModel的测试相对困难。