【问题标题】:Rails or Django style routing in PerlPerl 中的 Rails 或 Django 样式路由
【发布时间】:2011-04-10 00:06:04
【问题描述】:

我已经习惯了 Rails 映射路线或 Django 在路线上使用正则表达式的方式(我不期望在 Django 中,但这是我听说它是​​如何进行路由的)以及它们如何使用用于访问粒子网页的永久链接。是否可以在 Perl 中做同样的事情?

【问题讨论】:

  • 当然可以。不过,也许您会问如何使用特定的 Perl 框架来实现?
  • 你可能对catalystframework.org感兴趣
  • 没有框架可以吗?
  • Rails 和 Django 也是框架。如果通用语言在其核心(核心语言,而不是核心库)中包含此功能,我会有点恼火。
  • 这里是some modules,方便在框架之外使用

标签: ruby-on-rails django perl routing url-routing


【解决方案1】:

我认为大多数类似 Rails 路由的 Perl Web 框架应该是 Mojolicious

Mojolicious 的创建者确实写了一篇名为“Dispatchers for dummies”的优秀博客文章,比较了主要的 Perl、Ruby 和 Python Web 框架,并强调了他认为他在 Mojolicious 上通过路由所做的改进。

不幸的是,上面的帖子不再在线 :( 相反,您必须满足于Mojolicious::Guides::Routing 文档。这是文档中的路由示例:

package MyApp;
use base 'Mojolicious';

sub startup {
    my $self = shift;

    # Router
    my $r = $self->routes;

    # Route
    $r->route('/welcome')->to(controller => 'foo', action => 'welcome');
}

1;


还有其他 Perl 框架提供直接 URL 到操作路由:

Perl web frameworks 的更完整列表可以在 Perl5 wiki 上找到


如果您对框架不利,请查看Plack另请参阅PSGI wikipedia)。这与 Ruby 上的 Rack 和 Python 上的 WSGI 相同。

这是一个快速而肮脏的 Plack 示例:

use 5.012;
use warnings;

my $app = sub {
    my $env = shift;

    given ($env->{PATH_INFO}) {

        return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello Baz!' ] ]
            when '/hello/baz';

        default {
            return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello World' ]];
        }
    }
}

然后使用plackup above_script.psgi 就可以了。

【讨论】:

【解决方案2】:

Quite possibleCatalyst,尽管似乎没有人使用它,除了国际化内部定义的调度路径。

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多