Perl Mojolicious
Mojolicious縺ィ縺ッシ
Web繝輔Ξ繝シ繝繝ッ繝シ繧ッ
隱ュ縺ソ譁ケシ壹Δ繧ク繝・繝ェ繧キ繝」繧ケ
Perl縺ョWeb繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ繝輔Ξ繝シ繝繝ッ繝シ繧ッ
MVC繝輔Ξ繝シ繝繝ッ繝シ繧ッ縺ォ縺翫¢繧九〃iew縺ィController縺ョ讖溯ス繧呈戟縺、縲
Perl 5.10.1 莉・髯阪〒蜍穂ス懊
Mojolicious繧ウ繝槭Φ繝
襍キ蜍
$ morbo ス.pl
繝サWeb繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ隱ュ霎シ
繝サ髢狗匱逕ィ繧オ繝シ繝舌シ襍キ蜍
繝サ繝繝輔か繝ォ繝医〒繝ュ繝シ繧ォ繝ォ繝帙せ繝茨シ127.0.0.1:3000縺ァ蠕讖
蛛懈ュ「
繧ウ繝槭Φ繝峨Λ繧、繝ウ荳翫〒縲√靴trl縲搾シ九靴縲
縺イ縺ェ蠖「繧剃ス懊k
$ mojo generate lite_app 繝輔ぃ繧、繝ォ蜷
Mojolicious::Lite繧剃スソ縺」縺溘イ縺ェ蠖「縺御ス懈舌&繧後k
髢狗匱逕ィ繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ繧オ繝シ繝舌シ縺ョ襍キ蜍
$ morbo 繝輔ぃ繧、繝ォ蜷
竍堤判髱「荳翫↓縲ヾerver available at http://127.0.0.1:3000.縺ィ陦ィ遉コ縺輔l繧
繝悶Λ繧ヲ繧カ縺ァ竊 縺ォ繧「繧ッ繧サ繧ケ縺ァ縺阪k
http://127.0.0.1:3000
縺イ縺ェ蠖「縺ョ荳ュ霄ォ
窶サmojo generate lite_appス槭〒菴懈舌&繧後k繝輔ぃ繧、繝ォ縺ョ荳ュ霄ォ
#!/usr/bin/env perl
use Mojolicious::Lite;縲窶サMojolicious蛻ゥ逕ィ縺ョ轤コ縺ョ繝「繧ク繝・繝シ繝ォ
# Documentation browser under "/perldoc"
plugin 'PODRenderer';縲窶サ讖溯ス諡。蠑オ縺ョ轤コ縺ョ繝励Λ繧ー繧、繝ウ縲訓ODRenderer縲阪r菴ソ逕ィ
#get髢「謨ー縺ョ蜻シ縺ウ蜃コ縺
get '/' => sub {
縲縲my $c = shift;
縲縲窶サ繧ウ繝ウ繝医Ο繝シ繝ゥ繝シ縺ョrender繝。繧ス繝繝峨r螳溯。(index繧貞コ蜉)
縲縲$self->render('index');縲
};
#螳溯。
app->start;
#莉・髯阪r繝繝シ繧ソ縺ィ縺励※謇ア縺(Welcome to ス 縺ョ譁蟄励′繝繝シ繧ソ縺ィ縺励※謇ア繧上l縺ヲ繝悶Λ繧ヲ繧カ縺ォ陦ィ遉コ縺輔l繧)
縺薙l縺ォ繧医j繧ウ繝ウ繝医Ο繝シ繝ゥ繝シ驛ィ縺ィ蜷後§繝輔ぃ繧、繝ォ縺ォ繝薙Η繝シ驛ィ繧呈嶌縺代k
(繝薙Η繝シ縺瑚、髮代↑蝣エ蜷医ッ蛻・繝輔ぃ繧、繝ォ縺ォ險倩ソー)
__DATA__
#谺。縺ォ@@縺悟コ縺ヲ縺上k縺セ縺ァ縺ョ遽蝗イ繧段ndex.html.ep縺ィ縺縺繝輔ぃ繧、繝ォ縺ィ縺励※謇ア縺(ep諡。蠑オ蟄舌ッ繝繝ウ繝励Ξ繝シ繝医ヵ繧。繧、繝ォ)
@@ index.html.ep
#繝繝ウ繝励Ξ繝シ繝亥縺ァ縺ョ縲%縲阪ッ縺昴ョ陦後rPerl縺ョ繧ウ繝シ繝峨→縺励※螳溯。後☆繧(<% ス %> 繧ょ庄)
#繝ャ繧、繧「繧ヲ繝医ョ謖螳(layouts繝輔か繝ォ繝蜀縺ョ繝ャ繧、繧「繧ヲ繝医ヵ繧。繧、繝ォ繧帝←逕ィ縺吶k)
% layout 'default';
% title 'Welcome';縲#title髢「謨ー(Welcome繧呈欠螳)
Welcome to the Mojolicious real-time web framework!
@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
縲縲#竊代〒譬シ邏阪@縺殳itle髢「謨ー縺ョ蜻シ縺ウ蜃コ縺
縲縲<head><title><%= title %></title></head>
縲縲<body><%= content %></body>
</html>
繝ォ繝シ繝繧」繝ウ繧ー
(繝壹シ繧ク蜷)縺ク縺ョget繝ェ繧ッ繧ィ繧ケ繝亥女菫。譎
get '/(繝壹シ繧ク蜷)' => sub {
縲ス
}
(繝壹シ繧ク蜷)縺ク縺ョpost繝ェ繧ッ繧ィ繧ケ繝亥女菫。譎
post '/(繝壹シ繧ク蜷)' => sub {
縲ス
}
get '/' => sub {
縲#繧ウ繝ウ繝医Ο繝シ繝ゥ繝シ繧ェ繝悶ず繧ァ繧ッ繝医ョ蜿励¢蜿悶j
縲(HTTP繝ェ繧ッ繧ィ繧ケ繝域ッ弱↓逕滓舌&繧後k縲`ojolicious::Controller繧ッ繝ゥ繧ケ縺ョ繧ェ繝悶ず繧ァ繧ッ繝)
縲my $c = shift;
縲
縲View縺ァ菴ソ逕ィ縺ァ縺阪k螟画焚($value1)繧貞ョ夂セゥ
縲$c->stash( value1 => 'Perl' );
縲
縲View縺ァ菴ソ逕ィ縺ァ縺阪k螟画焚($value2)繧貞ョ夂セゥ
縲my $value = 'Perl'
縲$c->stash( value2 => $value );
縲
縲#繝ャ繝ウ繝繝ェ繝ウ繧ー(謠冗判)
縲#Mojolicious::Controller繧ェ繝悶ず繧ァ繧ッ繝.render()繝。繧ス繝繝峨r螳溯。
縲$c->render(template => 'index');
縲繝繝ウ繝励Ξ繝シ繝医ヵ繧。繧、繝ォ繧剃スソ逕ィ縺励※index繧呈緒逕サ
縲
縲繝ェ繝繧、繝ャ繧ッ繝(蛻・繝壹シ繧ク縺ク驕キ遘サ縺輔○繧句エ蜷)
縲$c->redirect_to('繝壹シ繧ク蜷');
};
app->start;
__DATA__
@@ index.html.ep
<p><%= $value1 %></p>
竊単erl
<p><%= $value2 %></p>
竊単erl
繝繝シ繧ソ騾∝女菫。
GET
get '/' => sub {
縲my $c = shift;
縲
縲繝代Λ繝。繝シ繧ソ蜷搾シ喩etdata縺ョ繝繝シ繧ソ繧貞叙蠕
縲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'
縲繝代Λ繝。繝シ繧ソ蜷搾シ喩etdata縺ァ繝繝シ繧ソ繧竪ET騾∽ソ。
縲%= submit_button '謚慕ィソ縺吶k'
% end
<p><%= $value1 %></p>
竊単erl
<p><%= $value2 %></p>
竊単erl
POST
post '/' => sub {
縲my $c = shift;
縲
縲繝代Λ繝。繝シ繧ソ蜷搾シ嗔ostdata縺ョ繝繝シ繧ソ繧貞叙蠕
縲my $ret = $c->param('postdata');
縲
縲$c->render(template => 'index');
};
@@ index.html.ep
%= form_for '/' => method => 'POST' => begin
縲Mojolicious繝倥Ν繝代シ繝。繧ス繝繝(蟆ら畑html逕滓舌さ繝槭Φ繝)
縲%= text_field 'postdata'
縲繝代Λ繝。繝シ繧ソ蜷搾シ嗔ostdata縺ァ繝繝シ繧ソ繧単OST騾∽ソ。
縲%= submit_button '謚慕ィソ縺吶k'
% end
<p><%= $entry %></p>
ANY
GET縲 ̄OST蜈ア騾壹ョ蛟、蜿門セ怜ヲ逅
any '/' => sub {
縲my $c = shift;
縲my $ret = $c->param('繝代Λ繝。繝シ繧ソ蜷');
縲$c->render(template => 'index');
};