Mojolicious 概要

テストサーバ起動

 MOJO_RELOAD=1 ./script/myapp daemon

http://www.simplicate.ca/blog/2008/12/getting-started-with-mojolicious---part-1.html

構造

  • lib/MyApp.pm アプリケーションクラス
  • lib/MyApp/Example.pm コントローラクラス

モデルクラスをアプリケーションクラスに登録する

 package MyApp;
 
 use MyApp::Model;
 __PACKAGE__->attr(model => sub { MyApp::Model->new });

テンプレート

コントローラからテンプレートに変数を渡し出力する

 $self->stash->{foo} = "FOO";
 $self->render();
 もしくは
 $self->render( foo => 'FOO' );

HTMLテンプレートファイル

 <%= $foo %>                    # エスケープされる
 <%== $foo %>                   # エスケープされない
 <%= (localtime)[5] + 1900 %>年 # Perl組込み関数
 <%#= TODO:XXXX %>              # コメント

いったん出力結果を取り出し、再出力する

 $self->stash->{partial} = 1;
 my $html = $self->render('foo' => 'FOO');
 $html =~ s/FOO/BAR/;
 
 $self->res->body($html);
 もしくは
 $self->stash->{partial} = 0;
 $self->stash->{text} = $html;
 $self->render();

FillInFormを使う

 $self->stash->{partial} = 1;
 my $html = $self->render('foo' => 'FOO');
 use HTML::FillInForm::Lite;
 my $h = HTML::FillInForm::Lite->new;
 $html = $h->fill(\$html, {textarea1 => 'VALUE'});
 $self->res->body($html);

http://search.cpan.org/perldoc?HTML::FillInForm::Lite

自作のhelper関数を登録する

アプリケーションクラスで、

 sub startup {
    $self->renderer->add_helper(zero_pad => sub { sprintf '%04d', $_[1] });
 }

登録し、テンプレートで

 <%= zero_pad(3) %>

使用する。

デバッグログ

 sub index {
   $self->app->log->debug('### TEST ####');
 }

Mojo::Home ホームオブジェクト

 $path = $self->app->home->to_string; # /home/taro/mojo/bbs/script/

アプリケーションをApacheでデプロイする

http://www.simplicate.ca/blog/2008/12/getting-started-with-mojolicious---part-1.html

参考・マニュアル

Perl入門~サンプルコードによるPerl入門~
http://d.hatena.ne.jp/perlcodesample/20091210/1260183022
Mojoを使って自作ウェブアプリをよりポータブルに!
http://gihyo.jp/dev/feature/01/mojo
Mojo開発リポジトリ
http://github.com/kraih/mojo
Template Toolkitプラグイン
http://search.cpan.org/perldoc?MojoX::Renderer::TT

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS