lite_appで作ったファイルを分割しよう

Created by @techno_neko

## 自己紹介 - 仕事: 組み込み系 - Twitter: @techno_neko - 所属: Hokkaido.pm
## 今日お話すること - lite_appとappの違い - 用意したlite_appの概要 - 分割してみる
## lite_appで作る例 ```Bash $ mojo generate lite_app my_lite_app.pl ```
## appで作る例 ```Bash $ mojo generate app MyApp ```
## appで作る例 - フォルダ構成はこんな感じ ``` bash my_app ├── lib │   ├── MyApp │   │   └── Example.pm │   └── MyApp.pm ├── log ├── public │   └── index.html ├── script │   └── my_app ├── t │   └── basic.t └── templates ├── example │   └── welcome.html.ep └── layouts └── default.html.ep ```
## 用意したlite_appの概要 ``` perl #!/usr/bin/env perl use Mojolicious::Lite; # Documentation browser under "/perldoc" plugin 'PODRenderer'; get '/' => sub { my $self = shift; $self->stash( gen_cmd => '$ mojo generate lite_app my_lite_app' ); $self->render( 'index' ); }; app->start; __DATA__ @@ index.html.ep % layout 'default'; % title 'Welcome'; こんにちは! @@ layouts/default.html.ep <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title><%= title %></title> </head> <body> <p id="greeting"><%= content %></p> これは、<code><%= $gen_cmd %></code>で作りました。 </body> </html> ```
これだとファイルを分割するまでもない!
## CSSを追加する ``` perl @@ layouts/default.html.ep <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title><%= title %></title> <style type="text/css"> body { background-color: #ccffcc; color: #000000; } </style> </head> <body> <p id="greeting"><%= content %></p> これは、<code><%= $gen_cmd %></code>で作りました。 </body> </html> ```
## JavaScriptを追加する - もちろん、jQueryも! - あれ?どこに配置したらいいの?
## 静的配信は"public"フォルダに - 例) JavaScript - "public/js/xxx.js" - scriptタグのsrcには"js/xxx.js"を書く - 例) CSS - "public/css/xxx.css" - linkタグのhrefには"css/xxx.css"を書く ``` bash ├── my_lite_app.cgi └── public ├── css │   └── xxx.css └── js ├── jquery-2.1.1.min.js └── xxx.js ```
## "*.ep"は"templates"フォルダに - "@@ index.html.ep"の次の行から"@@ layouts/default.html.ep"の手前までを、"index.html.ep"というファイルで格納 - "@@ layouts/default.html.ep"の次の行から最後までを、"default.html.ep"というファイルで格納 ``` bash ├── my_lite_app.cgi ├── public │   ├── css │   │   └── xxx.css │   └── js │   ├── jquery-2.1.1.min.js │   └── xxx.js └── templates ├── index.html.ep └── layouts └── default.html.ep ```

ご静聴ありがとうございました