テンプレートのドキュメントは部分的です。ソースを見てみました。
_.templateの機能は3つの引数があります。
- 文字列テキスト:テンプレート文字列
- オブジェクトデータ:評価データ
- オブジェクト設定:ローカル設定、_。templateSettingsはグローバル設定オブジェクトです
データがない場合(またはnullの場合)、レンダリング関数が返されます。引数は1つです。
- オブジェクトデータ:上記のデータと同じ
設定には3つの正規表現パターンと1つの静的パラメーターがあります。
- RegExpの評価:テンプレート文字列の "<%code%>"
- RegExp 補間:テンプレート文字列の "<%= code%>"
- RegExp エスケープ: "<%-code%>"
- 文字列変数:オプション、テンプレート文字列内のデータパラメータの名前
評価セクションのコードは単純に評価されます。__p + = "mystring"コマンドを使用してこのセクションの文字列を評価済みテンプレートに追加できますが、これはお勧めできません(テンプレートインターフェイスの一部ではありません)。代わりに補間セクションを使用してください。このタイプのセクションは、ifまたはforのようなブロックをテンプレートに追加するためのものです。
補間セクションのコードの結果は、評価されたテンプレートに追加されます。nullが返された場合、空の文字列が追加されます。
エスケープのセクションエスケープHTML _.escape与えられたコードの戻り値に。よりその類似したので_.escape(コード)で補間セクションが、それはしてエスケープ\などの空白文字のn \それがコードを渡す前に_.escape。なぜそれが重要なのかはわかりませんが、コード内にありますが、空白文字をエスケープしないinterpolateおよび_.escapeでもうまく機能します。
デフォルトでは、データパラメータはwith(data){...}ステートメントによって渡されますが、この種の評価は、名前付き変数による評価よりもはるかに遅くなります。命名だから、データをと変数パラメーターを使用は良いことです...
例えば:
var html = _.template(
"<pre>The \"<% __p+=_.escape(o.text) %>\" is the same<br />" +
"as the \"<%= _.escape(o.text) %>\" and the same<br />" +
"as the \"<%- o.text %>\"</pre>",
{
text: "<b>some text</b> and \n it's a line break"
},
{
variable: "o"
}
);
$("body").html(html);
結果
The "<b>some text</b> and
it's a line break" is the same
as the "<b>some text</b> and
it's a line break" and the same
as the "<b>some text</b> and
it's a line break"
テンプレートの使用方法とデフォルト設定を上書きする方法の例については、こちらをご覧ください:http :
//underscorejs.org/#template
テンプレートの読み込みには多くのオプションがありますが、最終的には常にテンプレートを文字列に変換する必要があります。上記の例のように通常の文字列として指定するか、スクリプトタグから読み込んでjqueryの.html()関数を使用するか、require.jsのtplプラグインを使用して別のファイルから読み込むことができます。。
テンプレートの代わりに簡潔な domツリーを構築する別のオプション。