前言
其他文章说的太复杂了,我在这简化一下问题。
MVC模式
- 什么是MVC 模式?
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 - MVC的主要配合流程
MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)
MVC与MVVM的关系
所有的MVVM架构模式,本质上都是MVC架构模式,MVVM中的VM是MVC中C的一种进一步抽象方案
这种关系是什么产生的
由于一般公司都会将核心业务逻辑放在后端,所以实际上前端的主要工作是将后端给出来的数据,映射到页面上,即便有数据处理工作,也都是简单操作。所以我们发现,在曾经MVC架构模式下,C层的主要工作,大部分都是用来处理V和M的映射关系了,但是这一类C层的工作,又是有高度通用性的。比如,V和M之间的映射关系,主要其实就三种:
- V向M数据映射
- M向V数据映射
- M和V互相映射
以上三种映射方案,前两种可以抽象为单向映射(绑定),最后一种是双向映射(绑定)。所以Vue就尝试将前端通用性的C层进一步细化为了VM层,免掉了大量前端model与view绑定的工作。换而言之,就是省掉了大量html标签数据与js数据之间的关系处理,让前端真正聚焦于M层怎么拿数据,和V层怎么排版页面。
当VM层被从C层剥离之后,C层只剩下一点简单的数据处理逻辑,不足为道,因此剩下这点儿C就被弱化了。
最后其实有个思考题,可以考虑下,为什么后端没有演化出MVVM架构呢?
参考资料
你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解? - 木子教程的回答 - 知乎
https://www.zhihu.com/question/20148405/answer/2299264333