ダウンロード サンプルファイル (100.3 KB)
前回はJsRenderの基本的な機能であるifを使った条件分岐と、forを使った列挙を紹介しました。今回は複数のテンプレートを合成する方法を紹介します。
対象読者
- JavaScriptテンプレートエンジンに興味のある方
- JavaScript、jQueryの基本を理解している方
必要な環境と準備
JsRenderとjQueryを以下のサイトからダウンロードしてください。詳しくは、第1回を参照してください。
テンプレートのコメント
今回から、サンプル中のテンプレートにコメントが現れます。
テンプレートの中で、コメントは{{!-- コメント --}}と記述します。JsRenderはコメントを無視しますので、送信されたテキストにもコメントは含まれません。
テンプレートコメントの代わりに、HTMLのコメント(<!--~-->)の使用も可能ですが、こちらはブラウザにもそのまま送信されるので注意してください。
<script id="itemTemplate" type="text/x-jsrender">
この下にテンプレートのコメントがあります。<br/>
{{!-- これはテンプレートのコメントです。 --}}<br/>
<br/>
この下にHTMLのコメントがあります。<br/>
<!-- HTMLのコメントです。 -->
</script>
テンプレートの合成
テンプレートを定義していると、同じパターンが何度も現れる場合があります。繰り返し現れる部分を外部テンプレートとして別に定義することで、テンプレートの定義が簡潔になります。テンプレートの中から別のテンプレートを参照する機能を、テンプレートの合成といいます。
includeを使ったテンプレートの合成
テンプレートを合成するには、テンプレートの中に{{include tmpl="テンプレート名"/}}と記述します。テンプレート名の箇所には、名前付きテンプレートの名前か、テンプレートを定義したscript要素のidの値を指定します。
名前付きテンプレートの定義方法は、第1回を参照してください。
<!-- テンプレートの定義 -->
<script id="itemTemplate" type="text/x-jsrender">
<b>名前:{{>name}}</b><br/>
<br/>
住所:<br/>
{{!-- 1. 外部テンプレートを参照 --}}
{{include tmpl="#addressTemplate"/}}
</script>
<!-- 2. 参照先のテンプレートの定義 -->
<script id="addressTemplate" type="text/x-jsrender">
〒{{>zip}}<br/>
{{>province}}{{>county}}{{>city}}{{>street}}<br/>
</script>
<!-- テキストを表示するdiv要素 -->
<div id="placeholder"></div>
<script type="text/javascript">
// データモデルの定義
var item = {
name: "富士箱根伊豆国立公園 箱根ビジターセンター",
zip: "250-0522",
province: "神奈川県",
county: "足柄下郡",
city: "箱根町",
street: "元箱根164"
};
// 3. テンプレートを使ったテキストの生成
var result = $("#itemTemplate").render(item);
// div要素の中身を入れ替える
$("#placeholder").html(result);
</script>
- テンプレート内に{{include}}タグを記述し、外部テンプレート名として"#addressTemplate"を指定しています。
- 参照先のテンプレートを定義します。script要素のid属性にaddressTemplateが指定されています。
- JsRenderのrenderメソッドを呼び出し、HTMLを出力します。この例では2つのテンプレートを使っていますが、renderメソッドの呼び出しは1度だけです。
{{include tmpl="テンプレート名"/}}の右二重ブレースの直前に/があります。これはXMLやHTMLの空要素(<br/>など)と同様のもので、{{include tmpl="テンプレート名"}}{{/include}}のような形での記述もできます。
この記事は参考になりましたか?
- 徹底解説JsRender/JsViews連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト やましぎ(ヤマシギ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
