jQueryをそのまま利用しているWebアプリでは、クライアント側のテンプレートエンジンはしばらくjQuery Templateを使っていましたが、いつのまにかjQueryのテンプレートエンジンはJsRenderというテンプレートエンジンに移行していました。
経緯は「Dancing with Data: jQuery Templates and JsViews: The Roadmap」に書いてあります。
Github: https://github.com/borismoore/jsrender
使い方はリファレンスに詳しい説明があるので、ここではJsRenderを使い始める手順についてデモのサンプルコード01_inserting-data.htmlを使って説明します。
[html title=”http://borismoore.github.io/jsrender/demos/step-by-step/01_inserting-data.html”]
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
<script src="../../jsrender.js" type="text/javascript"></script>
<link href="../resources/demos.css" rel="stylesheet" type="text/css" />
</head>
<body>
<a href="../demos.html">JsRender Demos</a><br />
<h3>Render template against local data</h3>
<script id="movieTemplate" type="text/x-jsrender">
<div>
{{:#index+1}}: <b>{{>name}}</b> ({{>releaseYear}})
</div>
</script>
<div id="movieList"></div>
<script type="text/javascript">
var movies = [
{ name: "The Red Violin", releaseYear: "1998" },
{ name: "Eyes Wide Shut", releaseYear: "1999" },
{ name: "The Inheritance", releaseYear: "1976" }
];
// Render the template with the movies data and insert
// the rendered HTML under the "movieList" element
$( "#movieList" ).html(
$( "#movieTemplate" ).render( movies )
);
</script>
</body>
</html>
[/html]
このコードを表示すると以下のようになります。
必要なjsファイル
依存するjquery.jsとjsrender.jsのみです。
[html]
<script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
<script src="../../jsrender.js" type="text/javascript"></script>
[/html]
テンプレートの書き方
テンプレートタグは{{…}}のように記述します。
[html]
<script id="movieTemplate" type="text/x-jsrender">
<div>
{{:#index+1}}: <b>{{>name}}</b> ({{>releaseYear}})
</div>
</script>
[/html]
ここで使われているテンプレートタグについてだけ説明すると
{{: …}}
指定されたパスのデータを表示、値に含まれるHTMLをレンダリングします。
{{> …}}
指定されたパスのデータを表示、値に含まれるHTMLはエスケープされます。
{{:#index+1}}
配列をテンプレートに渡した場合に、0で始まるインデックスを取得できます。
テンプレートの呼び出し
render関数にデータを渡します。
[javascript]
$( "#movieTemplate" ).render( movies )
[/javascript]