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脚本的主要内容都相当于完整应用程序的启动
子部分,而不是控制器