MojoliciousでMiddleman的(静的HTML書き出し)なことをするのあとPHPで簡単なTwitterライクなデモサイトを作らされていたら思考が停止してしまっていました。
実践でいくつか使いつつブラッシュアップしていった結果少し洗練されたものになってきたので今更になって書いておきます。
PHPって6,7年ぶり位に触った気がしますがこれくらいかったるいのなら、いっそJavaとかJava上のなにかとかのほうが覚悟がきまってていいんじゃないのかな?と思いました。ほんとになんでみんなPHP使ってるの?。
ということでMojoliciousでMiddleman的(静的HTML書き出し)なことをするをプラグイン化してGithubにあげてみました。CPANはまだよくわからない未開の地でした。
インストール方法
cpanm git@github.com:mozquito/Mojolicious-Plugin-Korpokkur.git
または
cpanm https://github.com/mozquito/Mojolicious-Plugin-Korpokkur/archive/0.02.tar.gz
でインストール出来ると思います。
こういったものは初めてなので不味い書き方とか依存の問題とかあるかもしれないです。
使い方
pluginをそのまま実行できるコマンドがついてるので通常はそれを使います。
基本的には下記のような手順で作業することになります。
-
pokkur generate sites サイト名(フォルダ名)
サイト構築キット一式を生成する -
cd サイト名
サイトフォルダに移動 -
kpokkur
テストサーバーhttp://localhost:3000で起動 - genareteで生成されたkorpokkur.yamlとsitemap.yamlを設定する
- 通常の静的フォルダはpublicフォルダにいれる(画像、js、cssやkorpokkurで管理しないHTMLなど)
- sitemap.yamlとstashフォルダ、templatesフォルダを変更してページを作成していく
- サイトが完成すれば
pokkur publish
でサイトを生成する。
url_forやurl_relなどのhelper関数をテンプレートで使うことで静的サイトでもwordpressのように動的なページ変えることができます。
Command pokkurについて
pokkurというコマンドがインストールされますがこれは単にプラグインをロードしていくつかのコマンドを追加するようにカスタマイズしたMojolicious::Liteアプリケーションです
pokkur genarate site
pokkur gerarate sites <site_name>
サイトを生成するために必要なskeletonをセットアップします。
pokkur gerarate sites <site_name> <theme名>
ホームディレクトリに.korpokkurというディレクトリを作成してテーマを入れておくと使えるというものです
pokkur publish
pokkur publish
サイトを生成します。
カレントディレクトリにwwwというディレクトリ名でpublicフォルダ(生成するもの以外の静的ファイル)と生成したファイルを組み合わせたサイト一式を生成します。納品するときやdeployするときに使います。
Command kpokkur
kpokkur
pokkurをアプリケーションサーバー(テストサーバー)として立ち上げます。Mojoliciousのmorboサーバーで立ち上がります。必要ファイルが監視されるように設定しているので再起動することなく変更が反映されます。通常 http://localhost:3000/でサイトを見ることが出来ます。morboと同じ形でport番号とかも変えられます。
設定ファイル korpokkur.yaml
サイト全体の設定を行うファイルです。
プラグインの設定やサイト共通のデータなど(jsやcssの設定やグローバルリンク)を書きます
設定ファイル2 sitemap.yaml
ページを生成するメタデータです。
一意のID(URLのリファレンスとしても使える)、description,keywords、template、url。
sitemap.yamlで設定したページが管理、出力されます。(別途publicフォルダを用いてその他のHTMLが共存可能です)
p1: #id
description: meta description
keywords: meta keywords
template: template名
path: index.html #url
設定ファイル3 stash/<リファレンス名>.yaml
ページごとにsitemap.yamlで設定したIDごとにstashを設定出来ます。
データはhash形式で受け取ります。hashの中身は自由です。テンプレートには$hash_keyで呼び出せます。
section: |-
# markdown
markdownや様々なデータを記述していく
再利用可能なデータにしておくのがベスト
Korpokkurを使う上での考え方
- HTML5は再利用性が高いので再利用可能なように構築する。
- Text::Xslateを使う(他でも流用しやすいので)
- 再利用可能なパーツはmacro化しておく
- Markdownを上手く使う
- urlはいつでも変更できるので最初は仮URLでもよい。
- 文章や再利用できそうなデータはstashに書く
- ページと対になるテンプレートをページごとに作成し直接書いていってもいい
- 応用したいことがあったらMojoliciousとText::Xslateの機能を使って拡張する