从MVC到MVVM的意义之我见

题外话:发现自己的草稿箱里面还有几篇很久以前写了一半但是忘了结尾的东西,年关将至把最不烧脑的一篇打扫一下发出来吧。

MVC

先来看一张MDN的官方图:

MVC MDN

我之所以班门弄斧自己整一张主要是为了接下来与MVVM的比较。
mvc myself

关于MVC的文章汗牛充栋,我就说一句个人认为理解的关键:单向数据流,状态管理方法论Flux是对它的极大改进。

从上图可以看出对于比较简单的应用,View, Controller, Model的分层是很清晰明了的,但是如果应用比较复杂,VIew与Model之间,Controller与Model之间很有可能是多对多的关系,作为一团乱麻会给应用的状态管理造成很大的混乱。

那么就有人提出改进的方法,可不可以将Model的职能简化(瘦Model),单纯的作为一个数据层呢:
thin model

答案当然是可以!!

那么最后形成的数据流就是现在大热的MVVM。

MVVM

MVVM

MVVM的意义不仅在于使应用程序的层次更加简单,状态更加清晰,更重要的是View和ViewModel的交互方式,衍生出了很多双向绑定的方法(Angular.js的脏检查,Vue的数据劫持)

备注:上文提到的MVC/MVVM都是基于前端的架构角度,记得以前看过一篇文章是从应用程序前后端的角度来阐述MVC/MVVM,文章找不到了但是我觉得很有意思,所以也记下来。

如果把应用程序作为一个前后端的整体,其实就是一种MVVM的模式。前端页面没有办法去直接操作后台数据库,只能通过发送http请求(像是flux/redux中精炼的action)到Server端,Server端收到请求后更新数据库,返回数据更新前端页面。

前端页面MVC的状态管理难搞就是因为view和model的之间的操作可以实现而且成本很低。

这个观点很有启发性。画一张图以表敬意 :)
mvvm

猜你喜欢

转载自blog.csdn.net/Napoleonxxx/article/details/79322650
今日推荐