mojolicious中路线名称的目的是什么?

时间:2013-02-15 01:26:50

标签: perl routes mojolicious

我一直在学习如何使用Mojolicious框架对应用程序进行编程,我对使用路径名称的原因感到困惑。例如,路线可以说

$r->route('/cities/new')
      ->via('get')
      ->to(controller => 'cities', action => 'new_form')
      ->name('cities_new_form');

但是name参数的目的是什么?我是网络框架的新手,所以也许这对它有一个简单的答案。

1 个答案:

答案 0 :(得分:17)

如果要动态生成URL,则命名路径允许您稍后引用它。在您的示例中,您可以稍后在代码中执行此操作:

my $link = $self->url_for( 'cities_new_form' )

$link将自动填充以/cities/new结尾的网址。如果你的路线有动态部件,你可以得到它。例如:

$r->route( '/cities/:cityname' )
    ->via( 'get' )
    ->to( controller => 'cities', action => 'new_form' )
    ->name( 'cities_new_form' );

然后您可以生成类似

的网址
my $link = $self->url_for( 'cities_new_form', cityname => 'newyork' );

$link最终会以/cities/newyork结束。

这些都是微不足道的例子,但是一旦你的路线越来越多,你就可以构建相当复杂的东西。

如果您没有为路由命名,则会获得一个默认名称,该名称只是其中字母数字字符的串联。对于长路线来说,这可能会变得乏味,因此您可以使用名称来缩写它们。

另请参阅Mojolicious文档中的Named Routes