- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl-Mojolicious/インストール へ行く。
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 コントローラクラス
ルーティング
sub startup { $r->route('/example/welcome2',)->to(controller => 'example', action => 'welcome2')->name('welcome2'); }
<a href="<%= url_for('welcome2') %>"> GO to welcome2 </a>
参考
http://d.hatena.ne.jp/perlcodesample/20091102/1246274997
リダイレクト
sub index2 { my $self = shift; return $self->redirect_to($self->url_for(controller => 'example', action => 'index')); }
モデルクラスをアプリケーションクラスに登録する
package MyApp; use MyApp::Model; __PACKAGE__->attr(model => sub { MyApp::Model->new });
- attr()はモデルクラス等を登録出来るアクセサ。
- http://search.cpan.org/perldoc?Mojo::Base
テンプレート
- http://search.cpan.org/perldoc?MojoX::Renderer
- ファイルタイプ(HTMLやJSON)毎にレンダラー(テンプレートエンジン)を登録出来る。
コントローラからテンプレートに変数を渡し出力する
$self->stash->{foo} = "FOO"; $self->render(); もしくは $self->render( foo => 'FOO' );
HTMLテンプレートファイル
<%= $foo %> # エスケープされる <%== $foo %> # エスケープされない <%= (localtime)[5] + 1900 %>年 # Perl組込み関数 <%#= TODO:XXXX %> # コメント
- ↑ templates/example/index.html.ep
- Mojo::Template(標準テンプレートエンジン) http://search.cpan.org/perldoc?Mojo::Template
いったん出力結果を取り出し、再出力する
$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
includeする
%= include {template => 'example/inc'};
自作の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://mojolicious.org/
- Mojoメーリングリスト
- http://lists.kraih.com/pipermail/mojo/
- Mojo開発リポジトリ
- http://github.com/kraih/mojo
- Template Toolkitプラグイン
- http://search.cpan.org/perldoc?MojoX::Renderer::TT