构建 Mojolicious Lite 应用程序

Structuring a Mojolicious Lite app

我真的很喜欢 Mojolicious::Lite 我在一个文件中对路线进行了概述。

get '/foo/#bar' => sub {
     my $c = shift;
     ...;
};

get '/baz/#foo' => sub {
     my $c = shift;
     ...;
};

然而,在某些情况下,文件中的 sub 变得太长和复杂,我想将它们分开,同时仍然保持 Lite 方法。

最好的方法是什么?是像在完整的 Mojolicious 应用程序中那样创建控制器,还是应该在单独的模块中创建助手,然后 use 它们?

我在文档中找不到指向它的指针。

遇到类似的问题,假设您想要保留 Mojolicious::Lite - 简单的解决方案是将 'outsource' 子程序放入 packages/modules,然后 use .

虽然您不需要做任何特别的事情 - 对于 Mojolicious::Lite,您需要 'helpers',这基本上是一种指定子例程的方式。

您可以跳过它,创建一个单独的模块,只定义您导入的子例程。

例如

#!/usr/bin/env perl
use strict;
use warnings;

package ExtraStuff;


sub generate_a_value {
     return 4; # generated by random dice roll, so guaranteed to be fair and random
 }

1; 

然后 use 在您的 Mojolicious 应用程序中。

对于 'config' 类型的内容也能很好地工作,尤其是当您重复使用它时。

我不建议直接 HTML 生成 - Mojolicious 已经为你处理了,而且可能更好 - 但只是 'outsourcing' 你可能通过助手做的事情.

当您解压缩精简版应用程序时,您最终会在 YourApp.pmstartup 子... like in the guide 中定义路由。由于您仍然可以通过 $r->get... 和朋友传递给代码参考,因此您不会因为远离光线而失去任何东西。

完整布局确实鼓励使用控制器,但您实际上不必那样做。