【问题标题】:Suggest some good MVC framework in perl [closed]在 perl 中推荐一些好的 MVC 框架 [关闭]
【发布时间】:2010-09-07 21:51:45
【问题描述】:

你能推荐一些用于 perl 的好的 MVC 框架吗——我知道的一个是 catalyst

需要能够在 perl 基础架构上公开服务,这些服务可以被 Java/.Net 应用程序无缝调用。

【问题讨论】:

    标签: perl model-view-controller


    【解决方案1】:

    我现在要告诉您,Catalyst 在快速应用程序开发 MVC 框架方面在 Perl 开发人员中享有最高的声誉。

    就“纯”MVC 而言,我不确定是否有那么多“成熟”或至少可用于生产的替代方案。

    如果您觉得 Catalyst 不合适,那么您可以在轻量级框架 CGI::Application 上进行构建以满足您的需求,或者查看一些鲜为人知的 MVC 框架,例如 PageKitMaypole

    【讨论】:

    • @David:据我所知,Maypole 几乎被遗弃了,我不推荐那个。不知道 PageKit,但 Jifty 也可能是一个替代方案。
    • Maypole 的最后一个版本是在 2008 年 4 月发布的。对我来说,这听起来不像是废弃软件。
    • 那只包含少数错误修正。之前的最后一个版本是 2007 年 8 月。每 6 个月发布一个错误修复版本并不是我所说的非常活跃。
    • 只是检查我们当前的框架是否已经在使用 CGI.pm 是否有足够的理由跳转到 Catalyst?目标是对 web 2.0 非常友好。谢谢。
    • 如果您不确定迁移到框架的原因,那么我个人认为您不应该这样做。在个人项目中试用该框架,并确保您首先完全理解它。
    【解决方案2】:

    自从这个旧线程弹出以来,我将提到 Perl MVC 世界的两个令人兴奋的新添加:

    • Dancer (CPAN) 深受 Ruby 的 Sinatra 影响,以非常轻量级着称
    • Mojolicious (CPAN) 由 Catalyst 的原始开发人员编写,使用他在那里学到的知识,它没有非核心依赖项,具有非常现代的内置函数(HTML5/CSS3/Websockets,JSON/XML 解析器,它自己的UserAgent/模板引擎)

    (请注意,我使用 Mojolicious 的次数超过了 Dancer,因此,如果我错过了我为 Mojolicious 列出的 Dancer 的某些功能,那么我提前道歉)

    【讨论】:

      【解决方案3】:

      除了已经提到的之外,另一种选择是连续性;然而,它(顾名思义)是基于延续的,而不是典型意义上的 MVC。尽管如此,还是值得一提,因为它是更好的 Perl Web 框架之一。

      也就是说,我更喜欢 Catalyst,而不是任何替代品。而且它一直在变好!不利的一面是,当前首选的编码方法继续以相当快的速度发展——但在最近的几个版本中,一直非常强调 API 兼容性,因此现在的负担主要是精神上的,而不是管理上的。特别是即将推出的 Moose 内部组件端口将提供一些极好的好处。

      但是,IMO 支持 Catalyst 的最大理由是链式调度类型。我在所有 web-framework-dom 中都没有看到过类似的东西,它是一个非常好的工具,可以让你的代码尽可能 DRY。这与 Catalyst 提供的另一个很棒的东西很好地结合在一起,即uri_for - 一个方法,它接受一个控制器和一堆参数,然后构造一个将分派到那个地方的 URI,它返回。总之,这些设施意味着您可以以任何您认为正确的方式构建您的 URI 空间,同时可以构建您的控制器以避免重复逻辑,并且保持模板独立于 URI 结构。

      真是太棒了。

      【讨论】:

      • +1 表示连续性。顺便说一句...默认情况下蹲在 Continuity 之上,从而为您提供 MVC 层。
      【解决方案4】:

      其他人制造的第二个 cmets:Catalyst(或多或少从 Maypole 分叉)是迄今为止最完整和最强大的 cmets。乔纳森·洛克威 (Jonathan Rockway) 写的一本书肯定会帮助您掌握它。

      除了'Chained'调度类型,:Regex(和:LocalRegex)调度方法提供了极大的灵活性。我们在这里构建的最新应用程序通过使用 :LocalRegex 的少数子程序支持许多看起来完全不同的 URL。

      我还特别喜欢您不限于特定的模板语言或数据库这一事实。邮件列表(和书)都偏爱 Template::Toolkit(我也是)和 DBIx::Class(我们继续使用 Class::DBI),但您几乎可以使用任何您喜欢的东西。 Catalyst 以这种方式非常不可知论。

      不要因为 Catalyst 似乎需要一半的 CPAN 作为依赖项而被推迟。一旦你启动并运行它,它就是一台运转良好的机器。它现在已经达到了成熟的程度,一旦你掌握它,你会发现它“消失在背景中”。您将时间花在解决业务需求上,而不是与您使用的工具作斗争。

      它会按照锡上所说的去做。催化剂++

      【讨论】:

        【解决方案5】:

        最近几天一直在玩Squatting,我不得不说它看起来很有前途,用起来很有趣。

        它是一个微型 Web 框架(或 Web 微型框架 ;-),深受用 Ruby 编写的 Camping 的影响。

        注意。 Squatting (& Camping) 没有将模型组件烘焙到框架中。以下是模型的作者 cmets...“模型?整个世界都是你的模型。;-) 我一直对在这里定义政策感到矛盾。使用适合你的任何东西”

        【讨论】:

          【解决方案6】:

          还有 CGI::Application,它更像是框架的内脏。它可以帮助人们编写基本的 CGI 并将其粘贴到其上以使其成为他们喜欢的自定义。所以你可以让它几乎不使用任何模块,或者几乎所有的人。

          【讨论】:

            【解决方案7】:

            催化剂是要走的路。还有 Jifty,但是(我上次查看时),它的文档很糟糕。

            【讨论】:

              【解决方案8】:

              如果您已经了解 Catalyst,那么我建议您专注于它。它是成熟的、有据可查的,并且拥有非常庞大的用户群、社区和插件集合。

              【讨论】:

                【解决方案9】:

                对于您的问题,我会研究一下 Jifty::Plugin::REST,它允许使用各种格式访问模型和操作。

                我只想说 Jifty 没有糟糕的文档。但是,包含的大多数文档都是 API 文档,但有一个非常低噪音的邮件列表,其中包含有用的提示和应用程序链接。

                http://jifty.org/ 上的 Wiki 是另一个有用的资源。

                如果您的目标是在下午制作视频商店(我最喜欢的 4GL 和 CRUD 框架基准测试),那真的值得一看!

                【讨论】:

                  【解决方案10】:

                  另一个选项是Gantry,当与 BigTop 模块一起使用时,它可以减少构建简单 CRUD 站点所需的时间。

                  【讨论】:

                    【解决方案11】:

                    还有Clearpress,我可以推荐它作为有用的数据库支持应用程序。它比 Catalyst 需要更少的依赖项。我们已经用它编写了一些大型应用程序,我使用它运行了一个羽毛球天梯网站。

                    【讨论】:

                      【解决方案12】:

                      我用Kelp 构建了一些应用程序,它易于学习且非常有用。

                      【讨论】:

                        猜你喜欢
                        • 2010-12-13
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-03-11
                        • 2011-10-26
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2010-11-05
                        相关资源
                        最近更新 更多