Perl Mojolicious
Mojoliciousとは?
Webフレームワーク
読み方:モジュリシャス
PerlのWebアプリケーションフレームワーク
MVCフレームワークにおける、ViewとControllerの機能を持つ。
Perl 5.10.1 以降で動作。
Mojoliciousコマンド
起動
$ morbo ~.pl
・Webアプリケーション読込
・開発用サーバー起動
・デフォルトでローカルホスト:127.0.0.1:3000で待機
停止
コマンドライン上で、「Ctrl」+「C」
ひな形を作る
$ mojo generate lite_app ファイル名
Mojolicious::Liteを使ったひな形が作成される
開発用アプリケーションサーバーの起動
$ morbo ファイル名
⇒画面上に、Server available at http://127.0.0.1:3000.と表示される
ブラウザで↓ にアクセスできる
http://127.0.0.1:3000
ひな形の中身
※mojo generate lite_app~で作成されるファイルの中身
#!/usr/bin/env perl
use Mojolicious::Lite; ※Mojolicious利用の為のモジュール
# Documentation browser under "/perldoc"
plugin 'PODRenderer'; ※機能拡張の為のプラグイン「PODRenderer」を使用
#get関数の呼び出し
get '/' => sub {
my $c = shift;
※コントローラーのrenderメソッドを実行(indexを出力)
$self->render('index');
};
#実行
app->start;
#以降をデータとして扱う(Welcome to ~ の文字がデータとして扱われてブラウザに表示される)
これによりコントローラー部と同じファイルにビュー部を書ける
(ビューが複雑な場合は別ファイルに記述)
__DATA__
#次に@@が出てくるまでの範囲をindex.html.epというファイルとして扱う(ep拡張子はテンプレートファイル)
@@ index.html.ep
#テンプレート内での「%」はその行をPerlのコードとして実行する(<% ~ %> も可)
#レイアウトの指定(layoutsフォルダ内のレイアウトファイルを適用する)
% layout 'default';
% title 'Welcome'; #title関数(Welcomeを指定)
Welcome to the Mojolicious real-time web framework!
@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
#↑で格納したtitle関数の呼び出し
<head><title><%= title %></title></head>
<body><%= content %></body>
</html>
ルーティング
(ページ名)へのgetリクエスト受信時
get '/(ページ名)' => sub {
~
}
(ページ名)へのpostリクエスト受信時
post '/(ページ名)' => sub {
~
}
get '/' => sub {
#コントローラーオブジェクトの受け取り
(HTTPリクエスト毎に生成される、Mojolicious::Controllerクラスのオブジェクト)
my $c = shift;
Viewで使用できる変数($value1)を定義
$c->stash( value1 => 'Perl' );
Viewで使用できる変数($value2)を定義
my $value = 'Perl'
$c->stash( value2 => $value );
#レンダリング(描画)
#Mojolicious::Controllerオブジェクト.render()メソッドを実行
$c->render(template => 'index');
テンプレートファイルを使用してindexを描画
リダイレクト(別ページへ遷移させる場合)
$c->redirect_to('ページ名');
};
app->start;
__DATA__
@@ index.html.ep
<p><%= $value1 %></p>
→Perl
<p><%= $value2 %></p>
→Perl
データ送受信
GET
get '/' => sub {
my $c = shift;
パラメータ名:getdataのデータを取得
my $ret = $c->param('getdata');
$c->render(template => 'index');
};
@@ index.html.ep
%= form_for '/' => begin
%= form_for '/' => method => 'GET' => begin
Mojoliciousヘルパーメソッド(専用html生成コマンド)
%= text_field 'getdata'
パラメータ名:getdataでデータをGET送信
%= submit_button '投稿する'
% end
<p><%= $value1 %></p>
→Perl
<p><%= $value2 %></p>
→Perl
POST
post '/' => sub {
my $c = shift;
パラメータ名:postdataのデータを取得
my $ret = $c->param('postdata');
$c->render(template => 'index');
};
@@ index.html.ep
%= form_for '/' => method => 'POST' => begin
Mojoliciousヘルパーメソッド(専用html生成コマンド)
%= text_field 'postdata'
パラメータ名:postdataでデータをPOST送信
%= submit_button '投稿する'
% end
<p><%= $entry %></p>
ANY
GET、POST共通の値取得処理
any '/' => sub {
my $c = shift;
my $ret = $c->param('パラメータ名');
$c->render(template => 'index');
};