Rails или маршрутизация в стиле Django в Perl - PullRequest
3 голосов
/ 09 сентября 2010

Я привык к тому, как Rails отображает маршрут, или Django использует регулярное выражение на маршруте (я не ожидал, что в Django, но я слышал, как он выполняет маршрутизацию) и как они используют стильпостоянные ссылки для доступа к веб-странице частиц.Можно ли сделать то же самое в Perl?

Ответы [ 2 ]

7 голосов
/ 09 сентября 2010

Я думаю, что веб-фреймворк Perl с большинством Rails-подобной маршрутизации был бы Mojolicious

Создатель Mojolicious написал отличную статью в блоге «Диспетчеры для чайников», в которой сравнивал основные веб-фреймворки Perl, Ruby & Python и рассказывал о том, что, по его мнению, было сделано с помощью маршрутизации. 1009 *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 можно найти в Perl5 wiki


А если у вас неблагоприятные рамки, взгляните на Plack ( также см. PSGI wikipedia) . Это то же самое, что Rack на Ruby и WSGI на Python.

Вот быстрый и грязный пример 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, и все, и вы идете.

3 голосов
/ 09 сентября 2010

Вполне возможно с Catalyst , хотя никто, кажется, никогда не использует его, за исключением интернационализации внутренне определенных путей отправки.

...