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を使って説明します。

<!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>

このコードを表示すると以下のようになります。
JsRenderDemo

必要なjsファイル

依存するjquery.jsとjsrender.jsのみです。

	<script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
	<script src="../../jsrender.js" type="text/javascript"></script>

テンプレートの書き方
テンプレートタグは{{…}}のように記述します。

<script id="movieTemplate" type="text/x-jsrender">
	<div>
		{{:#index+1}}: <b>{{>name}}</b> ({{>releaseYear}})
	</div>
</script>

ここで使われているテンプレートタグについてだけ説明すると

{{: …}}
指定されたパスのデータを表示、値に含まれるHTMLをレンダリングします。

{{> …}}
指定されたパスのデータを表示、値に含まれるHTMLはエスケープされます。

{{:#index+1}}
配列をテンプレートに渡した場合に、0で始まるインデックスを取得できます。

テンプレートの呼び出し
render関数にデータを渡します。

$( "#movieTemplate" ).render( movies )