MVC vs HMVC用于Web应用程序开发

时间:2011-03-28 03:25:25

标签: model-view-controller design-patterns hmvc

我正在使用MVC模式进行Web开发。我使用codeIgniter框架。我找到了http://fuelphp.com/http://kohanaframework.org/,他们正在使用HMVC。还不清楚HMVC以及为什么我们应该使用HMVC而不是MVC?阅读HMVC模式后我很困惑,它与MVC没有太大的不同。你能解释为什么我们应该使用HMVC进行Web应用程序开发吗?

3 个答案:

答案 0 :(得分:29)

HMVC可以做任何MVC可以做的事情

您在MVC中遇到过或将要遇到的一件事是,您无法从另一个控制器调用控制器(除非您使用自定义库或帮助程序来执行此操作)

在HMVC(分层模型视图控制器)中你可以做到这一点,我会在这里总结所有的品质:

  • 在其他项目中重用您的代码
  • 简化项目维护
  • 扩展您的项目
  • 整理代码
  • 模块化结构

尝试HMVC后,你永远不会回到MVC 这是一张更清晰的图片

See picture

用于CodeIgniter使用"模块化扩展 - HMVC"

Modular Extensions使CodeIgniter PHP框架模块化。模块是独立组件组, 典型的模型,控制器和视图,安排在应用程序模块子目录中,可以放入其他CodeIgniter应用程序。

模块控制器可以用作普通控制器或HMVC控制器,它们可以用作小部件来帮助您构建视图部分。

如果你想使用带有HMVC模式的codeigniter,你可以在这里使用Modular Extensions - HMVC

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

这里有一些很棒的,有趣的视频教程,可以让你在codeigniter中使用HMCV

https://www.youtube.com/watch?v=8fy8E_C5_qQ&list=PLBEpR3pmwCawDZ6FgNYoyvicEz4HrJPec&index=1

希望有所帮助!

答案 1 :(得分:21)

  

分层模型 - 视图 - 控制器(HMVC)模式是直接的   扩展到MVC模式,设法解决许多问题   已经提到的可伸缩性问题。 HMVC首先在a中描述   2000年7月在JavaWorld网站上发布了一篇名为HMVC: The layered pattern for developing strong client tiers的博文。很多内容   文章重点介绍了使用HMVC和图形用户的好处   接口。作者在哪里some suggestion   实际上重新解释了另一种模式   Presentation-Abstraction-Control(PAC)描述于1987年。该文章   在JavaWorld中详细解释了HMVC如何提供帮助   使用GUI设计桌面应用程序。这个焦点   文章旨在演示如何使用HMVC创建可扩展的Web   应用

     

HMVC是一系列传统MVC三元组的集合   应用。每个三元组都是完全独立的,可以执行   没有任何其他的存在。所有对三合会的要求都必须   使用控制器接口,从不加载模型或库   在他们自己的域之外。三合会内部的物理位置   托管环境并不重要,只要它可以访问   系统的所有其他部分。 HMVC的独特特征   鼓励重用现有代码,简化不同的测试   系统的一部分,确保应用程序很容易   增强或扩展。

来自Scaling Web Applications with HMVC 作者:Sam de Freyssinet

答案 2 :(得分:4)

您应该检查的另一个HMVC框架是Alloy。我试图在HMVC Architecture手册页上以外行人的术语解释这个概念,并在this StackOverflow response中解释类似的问题。