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

最佳答案

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

Mojolicious的创建者确实写了一篇很棒的博客文章,名为“ Dispatchers for Dummy”,比较了主要的Perl,Ruby和Python Web框架,并强调了他认为自己在Mojolicious上进行路由所做的改进。

不幸的是,上面的帖子不再在线了:(而是您必须满足Mojolicious::Guides::Routing文档的要求。这是来自docs的路由示例:

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到操作路由:


Jifty(使用漂亮的routing DSL
Dancer(类似于Ruby Sinatra
Mojolicious::Lite(同上)
Squatting(受Ruby Camping启发)
Web::Simple


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


如果您不利于框架,请查看Plack(另请参见PSGI维基百科)。这与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离开。

关于ruby-on-rails - Perl中的Rails或Django样式路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3672462/

10-16 21:45