【发布时间】:2010-09-07 21:51:45
【问题描述】:
【问题讨论】:
标签: perl model-view-controller
【问题讨论】:
标签: perl model-view-controller
我现在要告诉您,Catalyst 在快速应用程序开发 MVC 框架方面在 Perl 开发人员中享有最高的声誉。
就“纯”MVC 而言,我不确定是否有那么多“成熟”或至少可用于生产的替代方案。
如果您觉得 Catalyst 不合适,那么您可以在轻量级框架 CGI::Application 上进行构建以满足您的需求,或者查看一些鲜为人知的 MVC 框架,例如 PageKit 和 Maypole。
【讨论】:
自从这个旧线程弹出以来,我将提到 Perl MVC 世界的两个令人兴奋的新添加:
(请注意,我使用 Mojolicious 的次数超过了 Dancer,因此,如果我错过了我为 Mojolicious 列出的 Dancer 的某些功能,那么我提前道歉)
【讨论】:
除了已经提到的之外,另一种选择是连续性;然而,它(顾名思义)是基于延续的,而不是典型意义上的 MVC。尽管如此,还是值得一提,因为它是更好的 Perl Web 框架之一。
也就是说,我更喜欢 Catalyst,而不是任何替代品。而且它一直在变好!不利的一面是,当前首选的编码方法继续以相当快的速度发展——但在最近的几个版本中,一直非常强调 API 兼容性,因此现在的负担主要是精神上的,而不是管理上的。特别是即将推出的 Moose 内部组件端口将提供一些极好的好处。
但是,IMO 支持 Catalyst 的最大理由是链式调度类型。我在所有 web-framework-dom 中都没有看到过类似的东西,它是一个非常好的工具,可以让你的代码尽可能 DRY。这与 Catalyst 提供的另一个很棒的东西很好地结合在一起,即uri_for - 一个方法,它接受一个控制器和一堆参数,然后构造一个将分派到那个地方的 URI,它返回。总之,这些设施意味着您可以以任何您认为正确的方式构建您的 URI 空间,同时可以构建您的控制器以避免重复逻辑,并且保持模板独立于 URI 结构。
真是太棒了。
【讨论】:
其他人制造的第二个 cmets:Catalyst(或多或少从 Maypole 分叉)是迄今为止最完整和最强大的 cmets。乔纳森·洛克威 (Jonathan Rockway) 写的一本书肯定会帮助您掌握它。
除了'Chained'调度类型,:Regex(和:LocalRegex)调度方法提供了极大的灵活性。我们在这里构建的最新应用程序通过使用 :LocalRegex 的少数子程序支持许多看起来完全不同的 URL。
我还特别喜欢您不限于特定的模板语言或数据库这一事实。邮件列表(和书)都偏爱 Template::Toolkit(我也是)和 DBIx::Class(我们继续使用 Class::DBI),但您几乎可以使用任何您喜欢的东西。 Catalyst 以这种方式非常不可知论。
不要因为 Catalyst 似乎需要一半的 CPAN 作为依赖项而被推迟。一旦你启动并运行它,它就是一台运转良好的机器。它现在已经达到了成熟的程度,一旦你掌握它,你会发现它“消失在背景中”。您将时间花在解决业务需求上,而不是与您使用的工具作斗争。
它会按照锡上所说的去做。催化剂++
【讨论】:
还有 CGI::Application,它更像是框架的内脏。它可以帮助人们编写基本的 CGI 并将其粘贴到其上以使其成为他们喜欢的自定义。所以你可以让它几乎不使用任何模块,或者几乎所有的人。
【讨论】:
催化剂是要走的路。还有 Jifty,但是(我上次查看时),它的文档很糟糕。
【讨论】:
如果您已经了解 Catalyst,那么我建议您专注于它。它是成熟的、有据可查的,并且拥有非常庞大的用户群、社区和插件集合。
【讨论】:
对于您的问题,我会研究一下 Jifty::Plugin::REST,它允许使用各种格式访问模型和操作。
我只想说 Jifty 没有糟糕的文档。但是,包含的大多数文档都是 API 文档,但有一个非常低噪音的邮件列表,其中包含有用的提示和应用程序链接。
http://jifty.org/ 上的 Wiki 是另一个有用的资源。
如果您的目标是在下午制作视频商店(我最喜欢的 4GL 和 CRUD 框架基准测试),那真的值得一看!
【讨论】:
另一个选项是Gantry,当与 BigTop 模块一起使用时,它可以减少构建简单 CRUD 站点所需的时间。
【讨论】:
还有Clearpress,我可以推荐它作为有用的数据库支持应用程序。它比 Catalyst 需要更少的依赖项。我们已经用它编写了一些大型应用程序,我使用它运行了一个羽毛球天梯网站。
【讨论】:
我用Kelp 构建了一些应用程序,它易于学习且非常有用。
【讨论】: