## 自己紹介
- 仕事: 組み込み系
- Twitter: @techno_neko
- 所属: Hokkaido.pm
## 今日お話すること
- ひな形からスクリプトの生成
- ルーターの説明
- パラメーターの引き渡し
- テンプレートの書き換え
- Mojoliciousで配信
## ひな形からスクリプトの生成
```Bash
$ mojo generate lite_app my_gmap.pl
```
## ルーターの説明
- 最初はこれだけ存在しない
```Perl
get '/' => sub { # この部分
my $self = shift;
$self->render('index');
};
```
- リファレンスはここ http://mojolicio.us/perldoc/Mojolicious/Guides/Routing
## ルーターの説明
- "index.html"アクセスされた場合は?
```Perl
get '/index.html' => sub {
my $self = shift;
$self->render('index');
};
```
- これ、うまくいかないんだけど・・・
```Perl
get qr!/index\.html! => sub {
my $self = shift;
$self->render('index');
};
```
- HELP!!!
## パラメーターの引き渡し
- これをテンプレートに流し込む
```Perl
get '/' => sub {
my $self = shift;
my $bar = 'bar';
$self->stash( foo => 'foo' ); # この部分
$self->stash( bar => $bar ); # この部分
$self->render('index');
};
```
## テンプレートの書き換え
- テンプレートはこの部分
```Perl
@@ index.html.ep
% layout 'default';
% title 'Welcome';
Welcome to the Mojolicious real-time web framework!
@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body><%= content %></body>
</html>
```
## テンプレートの書き換え
- レイアウトは使わないよ!
```Perl
@@ index.html.ep
% title 'Welcome';
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body>Welcome to the Mojolicious real-time web framework!</body>
</html>
```
## テンプレートの書き換え
```Perl
@@ index.html.ep
% title 'Welcome';
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body>foo: <%= $foo %>, bar:<%= $bar %></body>
</html>
```
## Mojoliciousで配信
- デバッグ用(Win32だとダメ)
```Bash
$ morbo my_gmap.pl
```
## Mojoliciousで配信
- Win32でもOK(のはず・・・)
```Bash
$ perl my_gmap.pl daemon
```
## おまけ
- HTMLエスケープされちゃう
- <%= $foo %>
- そのまま出力される
- <%== $foo %>
## 追記
- XSS対策
- JSONをテンプレートで埋め込むのは危ない!
- JSONを返すAPIを作ろう
- HTMLのscriptタグ内に出力されるJavaScriptのエスケープ処理に起因するXSSがとても多い件について
- http://subtech.g.hatena.ne.jp/mala/20100222/1266843093
- XSSを回避しつつ、テンプレートからJavaScriptにJSONで値を渡す方法
- http://blog.nomadscafe.jp/2010/11/xssjavascriptjson.html