首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多MVC处理与单MVC过程

多MVC处理与单MVC过程
EN

Software Engineering用户
提问于 2011-06-16 16:48:32
回答 5查看 1.1K关注 0票数 5

我在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似乎有点合适,但我有兴趣了解其他方面的存在。

EN

回答 5

Software Engineering用户

发布于 2011-06-16 19:04:20

我认为您正在考虑的是一个名为HMVC的概念,它代表分层模型视图控制器。

这意味着当您呈现视图时,您可以向一个完全不同的控制器发送一个请求,并返回该视图并将其回显出来。它的行为与ajax请求完全一样,只是它不通过http,它通过框架,并且不发出额外的请求。

这在大多数框架中并不常见,不了解HMVC的人也不知道他们缺少什么。它清除了在常规MVC应用程序中看到的许多丑陋的模式。

例如,每个页面上都有一个购物车。从代码中调用购物车控制器,然后允许它处理呈现和其他事情,这不是很好吗?您可以为不同的状态显示不同的视图。试图在类或助手方法中这样做只是一团糟。

不管怎样,你来这里是为了一个像这样的框架。答案是科哈纳。这是相关的文档

下面是一个正在使用的例子:

Request::factory('shopping_cart/display_items')->execute()-body;

票数 3
EN

Software Engineering用户

发布于 2011-06-16 17:12:18

您可能找不到MVC的味道,因为它涉及到视图做任何事情。

如您所知,在MVC中,视图应该尽可能地“愚蠢”,以获得良好的关注点分离。

请求被路由到控制器上的操作,控制器执行模型上的所有逻辑,并决定显示什么并将其发送到视图。

由于您可以重用客户端代码和视图,所以我不明白MVC的哪些方面与枯燥原则不兼容?

如果您希望每个页面都能处理自己的逻辑,那么ASP.NET有视图-后台和页面模型,但是由于它本质上是WinForms的web翻译,所以它的状态驱动特性并不适合于Web (因为HTTP是无状态的),因此开发人员目前流行并迁移到ASP.NET MVC。

票数 2
EN

Software Engineering用户

发布于 2011-06-16 17:35:00

正如StuperUser所说的,MVC是基于视图的“愚蠢”或“瘦”的,老实说,如果您发现自己正在控制器中复制代码,您可能会对MVC的基本原理产生误解(在我的经验中,不一定很难理解,因为MVC很难理解)。

也就是说,您可能想看看.NET的WPF和Silverlight技术使用的might (Model,View,View-Model)结构(或者至少在3.5时使用)。它基于MVC,但有自己的一些规则,并且可能更接近您所要寻找的内容。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/84532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档