Perl 我可以在Mojolicious中的同一控制器中转发操作吗

Perl 我可以在Mojolicious中的同一控制器中转发操作吗,perl,mojolicious,mojolicious-lite,Perl,Mojolicious,Mojolicious Lite,如果我用控制器类拆分我的应用程序,我可以 get '/foo/bar' => { controller => 'Foo', action => 'bar' }; 如果我的操作在同一个mojolicous::Lite文件中,是否可以执行相同的操作 现在我知道了 sub foobar { my $c = shift; ... } get '/' => sub { foobar(@_) }; 但是我想做 get '/' => { action =&

如果我用控制器类拆分我的应用程序,我可以

 get '/foo/bar' => { controller => 'Foo', action => 'bar' };
如果我的操作在同一个mojolicous::Lite文件中,是否可以执行相同的操作

现在我知道了

sub foobar {
    my $c = shift;
    ...
}

get '/' => sub { foobar(@_) };
但是我想做

get '/' => { action => 'foobar' };
为了以后的一致性和易于拆分,我应该决定这样做,同时保持一般的Mojolicious::Lite结构(即:单个文件)


如何做到这一点?

虽然Mojolicious::Lite是一个非常简单的包装器,但Lite脚本中定义的任何Sub都不是控制器方法,而是应用程序方法。除了定义一个控制器之外,没有真正的方法使它们成为控制器方法,这在lite应用程序(非常简单的包装器)中也是完全可能的,但会使它不那么lite。但另一个方向很容易实现;在一个完整的应用程序中,您可以使用匿名子例程作为操作。您还可以将您的操作编写为助手,然后可以通过匿名子例程或控制器操作调用助手。对于一个完整的应用程序来说,这两种方法都不是很好的代码组织


在任何情况下,Mojolicious::Lite脚本的主要内容都相当于完整应用程序的
启动
子部分,而不是控制器。

虽然Mojolicious::Lite是一个非常简单的包装器,但Lite脚本中定义的任何子部分都不是控制器方法,而是应用程序方法。除了定义一个控制器之外,没有真正的方法使它们成为控制器方法,这在lite应用程序(非常简单的包装器)中也是完全可能的,但会使它不那么lite。但另一个方向很容易实现;在一个完整的应用程序中,您可以使用匿名子例程作为操作。您还可以将您的操作编写为助手,然后可以通过匿名子例程或控制器操作调用助手。对于一个完整的应用程序来说,这两种方法都不是很好的代码组织

在任何情况下,Mojolicous::Lite脚本的主要内容都相当于完整应用程序的
启动
子部分,而不是控制器