個人的には、私の会社で堅牢なソリューションが必要だったので、次のようにしました。
- Require.js-モジュールの読み込み用
- ハンドルバー-アンダースコアが提供できるよりも強力なテンプレート用
- HBS-コンパイルされたテンプレートをRequire経由で取り込むことを処理するAlexSextonの優れたrequireプラグイン
この設定では、すべてのテンプレートを独自のファイルに保存して、それらを使用するために次のようなファイルを作成できます。
define(['template!path/to/someTemplate'], function(someTemplate) {
var MyNewView = BaseView.extend({template: someTemplate});
$('body').append(new MyNewView().render().el);
}
(ご想像のとおり、ビューのテンプレートプロパティを使用してビューをレンダリングするBaseViewと呼ばれるベースバックボーンビューがあります)。
さて、そうは言っても、そのような堅牢なセットアップが必要ない場合は、Requireは適切ではない可能性があります。その場合、私は次のことを行います。
すべてのテンプレートを1つ以上のHTMLファイルに入れます。次のように、スクリプトタグでそれらをラップします。
<script id="dummyTemplate" type='text/template'>
<span>I'm a template!</span>
</script>
サーバー側でコードを記述して、クライアントに送信するメインHTMLファイルにそれらのHTMLファイルを含めます。
テンプレートIDを受け取り、その要素のテキストを取得し、それをテンプレートにコンパイルして、そのテンプレートを返す関数を記述します(必要に応じて、コンパイルされたテンプレートをキャッシュすることもできます...もちろん、アンダースコアテンプレートを使用するとは思いませんコンパイルする必要があるので、すべてスキップできます)。
関数を使用してテンプレートにアクセスします。$("#something").html(templateFunc('dummyTemplate').template())
これにより、テンプレートをhtmlファイル(構文の色付け用)に保存できますが、JSで便利にアクセスできます。テンプレートを取り込むためのインクルードロジックを記述できる限り、テンプレートを必要な数のファイルに分割することもできます。
ただし、Requireを選択した場合は、HBSプラグインを確認してください。また、Handlebarsテンプレートをまだ見ていない場合は、次のことをお勧めします。それらはアンダースコアのものよりもはるかに強力です(ただし、他の優れたテンプレートシステムと同様に、あまり多くのロジックを許可しないでください)。