6

我一直在学习如何使用 Mojolicious 框架对应用程序进行编程,我对你为什么使用路由名称感到困惑。例如一条路线可以说

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

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

4

1 回答 1

17

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

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

并且$link会自动填充以 . 结尾的 URL /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 文档中的命名路由

于 2013-02-15T02:19:00.473 回答