Fre*_*dou 4 model-view-controller mvp
当您启动一个新的Web应用程序时,您在MVC和MVP之间选择哪种模式?为什么?
emk*_*emk 11
(这个答案特定于Web应用程序.对于常规GUI,请参阅什么是MVP和MVC以及有什么区别?)
用于GUI应用程序的传统MVC
这与Web应用程序并不真正相关,但这里是MVC传统上如何在GUI应用程序中工作:
通过这种方法,您可以拥有(1)多种方式来更新给定的数据,以及(2)多种方式来查看相同的数据.但是你不必让每个控制器知道每个视图,反之亦然 - 每个人都可以只与模型交谈.
服务器上的MVC
Rails,Django和其他服务器端框架都倾向于使用特定版本的MVC.
这似乎对基于服务器的Web应用程序非常有效,我对此非常满意.
客户端上的MVP
但是,如果您的大部分代码都是用JavaScript编写并在Web浏览器中运行,那么现在很多人都会使用MVP.在这种情况下,角色有点不同:
此模型很受欢迎,因为您可以轻松删除视图层并针对演示者和模型编写单元测试.它也更适合于一切都在不断更新的交互式应用程序,而不是处理离散请求和响应的服务器应用程序.
这是一些背景阅读:
Google的MVP +活动总线
这是Google AdWords小组视频中介绍的一种新方法.它旨在与缓存,离线HTML 5应用程序以及GWT等复杂的客户端工具包配合使用.它基于以下观察:
在这种方法:
因此,这种体系结构本质上是异步的,它易于测试,如果您想编写HTML 5离线应用程序,则不需要进行重大更改.我还没有使用它,但它是我要尝试的事项列表中的下一个.:-)