LoginSignup
1
1

More than 5 years have passed since last update.

MojoliciousでMiddleman的な静的ファイル生成アプリを作る

Last updated at Posted at 2014-03-14

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をそのまま実行できるコマンドがついてるので通常はそれを使います。

基本的には下記のような手順で作業することになります。

  1. pokkur generate sites サイト名(フォルダ名) サイト構築キット一式を生成する
  2. cd サイト名 サイトフォルダに移動
  3. kpokkur テストサーバーhttp://localhost:3000で起動
  4. genareteで生成されたkorpokkur.yamlとsitemap.yamlを設定する
  5. 通常の静的フォルダはpublicフォルダにいれる(画像、js、cssやkorpokkurで管理しないHTMLなど)
  6. sitemap.yamlとstashフォルダ、templatesフォルダを変更してページを作成していく
  7. サイトが完成すれば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が共存可能です)

sitemap.yaml
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で呼び出せます。

stash/id名.yaml
section: |-
    # markdown
    markdownや様々なデータを記述していく
    再利用可能なデータにしておくのがベスト

Korpokkurを使う上での考え方

  • HTML5は再利用性が高いので再利用可能なように構築する。
  • Text::Xslateを使う(他でも流用しやすいので)
  • 再利用可能なパーツはmacro化しておく
  • Markdownを上手く使う
  • urlはいつでも変更できるので最初は仮URLでもよい。
  • 文章や再利用できそうなデータはstashに書く
  • ページと対になるテンプレートをページごとに作成し直接書いていってもいい
  • 応用したいことがあったらMojoliciousとText::Xslateの機能を使って拡張する
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1