とりあえず. $ mojo generate lite-app css や js など静的ファイルは public フォルダに置く. プログラムでファイルを作成してダウンロードできるようにするには そのファイルも public以下に生成させると, hoge でアクセスできる. 外部テンプレートフォルダは templates で,hoge.html.ep などを置く. ! クライアントとして $ mojo get https://mojolicious.org $ ./myapp.pl get /foo $ ./myapp.pl get -M PUT -c '{"message":"Hello Mojo!"}' /hoge !! サンプル ! モデル 自動で生成されるのは,コントローラとビューの部分. ある程度規模が大きいものは,シングルファイルでなく,モジュールを用意する. つまり,コントローラ部分に埋め込まず,モデルを別ファイルに自前で書く. # mkdir -p lib/MyApp/Model # touch lib/MyApp/Model/Greet.pm # chmod 644 lib/MyApp/Model/Greet.pm lib/MyApp/Model/Greet.pm package MyApp::Model::Greet; use strict; use warnings; use experimental 'signatures'; sub new ($class) {bless {}, $class} sub greeting ($self, $name) { return "Hello $name"; } 1; myapp.pl #!/usr/bin/env perl use Mojolicious::Lite -signatures; use lib 'lib'; use MyApp::Model::Greet; helper greet => sub {state $greet = MyApp::Model::Greet->new}; get '/hello/:who' => sub ($c) { my $w = $c->stash('who'); my $msg = $c->greet->greeting($w); $c->render(text => $msg); }; app->start; Try ! $ ./myapp.pl get /hello/taro Hello taro ! フォームで JSON をやり取りするサンプル myapp.pl #!/usr/bin/env perl use Mojolicious::Lite -signatures; get '/' => sub ($c) { $c->render(template => 'index'); }; get '/form' => sub ($c) { $c->render(template => 'form'); }; put '/endpoint' => sub ($c) { my $hash = $c->req->json; $c->render(json => {n => ++$hash->{num}}); }; app->start; __DATA__ @@ index.html.ep % layout 'default'; % title 'Welcome';