我在MVC框架cakephp中做了相当广泛的工作,但是我发现我更愿意让多个MVC驱动我的页面,而不是一个MVC。我的理由主要是为了保持一个更枯燥的原则。
在CakePHP MVC中:您调用一个调用单个MVC的URL,然后调用布局。我想要的是:您调用一个URL,它处理一个布局,然后在页面上每个组件/ html块调用多个MVC的布局。
当您比较JavaScript组件、AJAX和服务器端HTML呈现时,构建页面的最一致的方法似乎是通过组件块或HTML视图。这样,视图块可以位于服务器或客户端上。
从技术上讲,这是我对MVC模式的唯一异议。除此之外,IMHO MVC岩石!
我的问题是:其他哪些RAD框架遵循与MVC相同的原则,而是由MVC的视图驱动?
我看过Django和Rails,但它们似乎更受Controller驱动。
Lift/Scala似乎有点合适,但我有兴趣了解其他方面的存在。
发布于 2011-06-16 19:04:20
我认为您正在考虑的是一个名为HMVC的概念,它代表分层模型视图控制器。
这意味着当您呈现视图时,您可以向一个完全不同的控制器发送一个请求,并返回该视图并将其回显出来。它的行为与ajax请求完全一样,只是它不通过http,它通过框架,并且不发出额外的请求。
这在大多数框架中并不常见,不了解HMVC的人也不知道他们缺少什么。它清除了在常规MVC应用程序中看到的许多丑陋的模式。
例如,每个页面上都有一个购物车。从代码中调用购物车控制器,然后允许它处理呈现和其他事情,这不是很好吗?您可以为不同的状态显示不同的视图。试图在类或助手方法中这样做只是一团糟。
不管怎样,你来这里是为了一个像这样的框架。答案是科哈纳。这是相关的文档。
下面是一个正在使用的例子:
Request::factory('shopping_cart/display_items')->execute()-body;
发布于 2011-06-16 17:12:18
您可能找不到MVC的味道,因为它涉及到视图做任何事情。
如您所知,在MVC中,视图应该尽可能地“愚蠢”,以获得良好的关注点分离。
请求被路由到控制器上的操作,控制器执行模型上的所有逻辑,并决定显示什么并将其发送到视图。
由于您可以重用客户端代码和视图,所以我不明白MVC的哪些方面与枯燥原则不兼容?
如果您希望每个页面都能处理自己的逻辑,那么ASP.NET有视图-后台和页面模型,但是由于它本质上是WinForms的web翻译,所以它的状态驱动特性并不适合于Web (因为HTTP是无状态的),因此开发人员目前流行并迁移到ASP.NET MVC。
发布于 2011-06-16 17:35:00
正如StuperUser所说的,MVC是基于视图的“愚蠢”或“瘦”的,老实说,如果您发现自己正在控制器中复制代码,您可能会对MVC的基本原理产生误解(在我的经验中,不一定很难理解,因为MVC很难理解)。
也就是说,您可能想看看.NET的WPF和Silverlight技术使用的might (Model,View,View-Model)结构(或者至少在3.5时使用)。它基于MVC,但有自己的一些规则,并且可能更接近您所要寻找的内容。
https://softwareengineering.stackexchange.com/questions/84532
复制相似问题