JSON を Template-Toolkit で展開する Jemplate
Jemplate is a templating framework for Javascript that is built over Perl's Template Toolkit (TT2).
Jemplate parses TT2 templates using the TT2 Perl framework, but with a twist. Instead of compiling the templates into Perl code, it compiles them into Javascript.
かぜぶろさんや宮川さんがブックマークしてたので気になってちょっと見てみた新着モジュールの Jemplate。なかなか面白いです。Template-Toolkit で記述したテンプレートのテンプレート変数に JavaScript 上の JSON を展開させることができるというもの。
つまり、
<h1>[% title %]</h1>
というテンプレートに対して
{ title : 'My Homepage' }という JSON を渡すと、[% title %] が展開されて "My Homepage" になると。
仕組みが結構面白くって、まず最初に jemplate というコマンドラインツールで TT のテンプレートを JavaScript に変換(コンパイル)して、その JavaScript を HTML でロードする、という具合。template/body.html というテンプレートを用意して以下のようにテンプレートを記述して、
<h1>[% title %]</h1> <p>[% description %]</p>
これを jemplate コマンドでコンパイルする。
$ jemplate --compile template/* > js/jemplate01.js
このコンパイルされたコードと、Jemplate ディストリビューションに付属する Jemplate.js を HTML からロードして、Jemplate.process() にテンプレート名と JSON を渡す。
<html>
<head>
<title>Jemplate!</title>
<script type="text/javascript" src="../js/Jemplate.js"></script>
<script type="text/javascript" src="../js/jemplate01.js"></script>
</head>
<body>
<script type="text/javascript">
document.writeln(
Jemplate.process(
'body.html',
{
title : 'うはー夢がひろがりんぐ!',
description : 'Jemplate!'
}
)
);
</script>
</body>
</html>すると、body.html テンプレートに JSON が渡って展開されて、ご所望の出力が得られますと。
Jemplate の機能はまだ変数を展開するぐらいしかサポートされていないようですが、これがループやその他さまざまな機能を使えるようになったら熱いですね。サーバーサイドのアプリケーションから JSON を返してその JSON を TT で展開して画面描写ってことができる。Ajax アプリケーションを書くのが相当楽になりそう。
期待age。