さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

Expressのhjsでpartialが使えなかったのを修正した話

最近nodeで遊んだりしてました。

nodeで広く使われているフレームワークにexpressというモノがあります。 http://expressjs.com/

いまどきのフレームワークらしく生のHTMLではなくテンプレートを使うことができます。 express --helpでどれに対応しているのかある程度わかるだろーと思って眺めてみます。

  Usage: express [options] [dir]

  Options:

    -h, --help          output usage information
    -V, --version       output the version number
    -s, --sessions      add session support
    -e, --ejs           add ejs engine support (defaults to jade)
    -J, --jshtml        add jshtml engine support (defaults to jade)
    -H, --hogan         add hogan.js engine support
    -c, --css <engine>  add stylesheet <engine> support (less|stylus) (defaults to plain css)
    -f, --force         force on non-empty directory

Usageによると

  • ejs
  • jshtml
  • hogan

あたりが使えるようです。 そこで、twitterが使ってるしと軽い気持ちでHoganを選択した所大ハマリしてしまいました。

Hogan.jsで使っているテンプレートの文法はmustacheと同じなのですが

http://mustache.github.io/mustache.5.html

この中のpartialを使おうとしたら、 partialを認識しないという状況になっていました。 テンプレートを分割して管理できないのは生きて行くのが辛いので対処しないといけません。

expressとhogan.jsを組み合わせるためにデフォルト('''express -H''')で使われているhjsのコード を眺めてみると、なんと引数としてpartialを使ってもいなそうということがわかりました。

適当にpartialsとして渡された引数を評価して、分割されたpartialとして認識されるようにし その中身をHoganでHTMLにするという所を追加して事無きをえました。

githubに適当においておきます。 expressでhogan.js使いたい人は参考までに。

https://github.com/lambdasakura/hjs/tree/fix-partial

折角なので、本家にもpull requestを投げておきました。