我可以在Mojolicious

时间:2019-02-04 08:45:53

标签: perl mojolicious mojolicious-lite

如果我将应用程序与Controller类分开,我可以做

 get '/foo/bar' => { controller => 'Foo', action => 'bar' };

如果我的操作在同一个Mojolicious :: Lite文件中,我可以做同样的事情吗?

我暂时

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

get '/' => sub { foobar(@_) };

但我想做

get '/' => { action => 'foobar' };

为了保持一致性并便于以后拆分,我应该决定这样做,同时保持常规的Mojolicious :: Lite结构(即单个文件)。

这怎么办?

1 个答案:

答案 0 :(得分:0)

虽然Mojolicious :: Lite是一个非常简单的包装器,但Lite脚本中定义的任何子程序都不是控制器方法,而是应用程序方法。除了定义控制器以外,实际上没有其他方法可以使它们成为控制器方法,即使在精简版应用程序(非常简单包装器)中这也是完全可能的,但会使其变得不太精简。但是,另一个方向很容易实现。您可以将匿名子例程作为完整应用程序中的操作进行操作。您也可以将操作写为助手,然后可以从匿名子例程或控制器操作中简单地调用它们。对于完整的应用程序,这两种方法都不是很好的代码组织。

无论如何,主要要点是Mojolicious :: Lite脚本的内容等同于完整应用程序的startup子目录,而不是控制器。