MVC、MVP及MVVM

来源:互联网 发布:apache 进程池 编辑:程序博客网 时间:2024/06/06 02:51

经常听到这几个名词,但是网上的说法很多,千变万化。其实因为开发的领域不同,理解就不同,比如前端和后端在这个模式上的理解就有一些细微的区别。

关于MVVM,这篇文章讲的比较靠谱。
https://github.com/kuitos/kuitos.github.io/issues/35

关于这三者的一些理解,阮一峰老师的文章讲的也还算靠谱,但也不能全信。
http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

此外,某人结合android的理解谈了谈:
http://zjutkz.net/2016/04/13/%E9%80%89%E6%8B%A9%E6%81%90%E6%83%A7%E7%97%87%E7%9A%84%E7%A6%8F%E9%9F%B3%EF%BC%81%E6%95%99%E4%BD%A0%E8%AE%A4%E6%B8%85MVC%EF%BC%8CMVP%E5%92%8CMVVM/

说说自己的理解吧,举一个例子就是android中listview的实现。
model:定义了基本类,即数据。
view:定义了界面。
view-model:就是将model适配到view中的adapter。

AngularJS是哪种模式呢?

菜鸟教程中顺其自然地将其归类于MVC。
AngularJS 应用组成如下:
-View(视图), 即 HTML。
-Model(模型), 当前视图中可用的数据。scope 是模型。
-Controller(控制器), 即 JavaScript 函数,可以添加或修改属性。

但是网上与不少人认为AngularJS偏向于MVVM模式
http://blog.csdn.net/cz_sky/article/details/76064227
包括阮一峰老师:
http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
以及廖雪峰老师:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143233918656129f4ad3ac29e4f728dc72b5d2368215a000

并且,网上一致认为,双向绑定是MVVM框架最大的作用。

当然,最终官网给出的解释是,AngularJS为MVW,W指whatever。毕竟严格意义上AngularJS不属于任何一种。

总结:AngularJS、Vue等框架一般可认为是MVVM模式,但是严格意义上,咬文嚼字的话,就不好说了。

阮一峰老师博文下面的评论,有很多讲的比较好,值得一看。
另外,廖雪峰老师的实战案例中从MVC转型到MVVM的过程就可以大致理解下它们的区别。

暂时不深究这些关系了,慢慢来,在实战中结合自己的理解。

原创粉丝点击