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を投げておきました。