Underscore.js には、_.template
私が使用することをお勧めする優れた機能がありますが、以下にそれを解決できる 1 つの方法があります。
makeTemplate
変数を補間する関数を生成する関数です。テンプレート文字列を渡すと、オブジェクトで呼び出されたときにプロパティを補間する関数が生成されます。最初にテンプレートを処理する方が、毎回検索して置き換えるよりも一般的に効率的です。
var makeTemplate = (function() {
var escapeMap = {
'\n' : '\\n',
'\"' : '\\\"',
'\u2028' : '\\u2028', // line separator
'\u2029' : '\\u2029' // paragraph separator
};
return function (templateString) {
// Escape Special Characters
templateString = templateString.replace(/["\n\r\u2028\u2029]/g, function(index) {
return escapeMap[index];
});
// Replace interpolation ({@foo}) variables with their object counterpart.
templateString = templateString.replace(/\{@(\w+)\}/g, '" + (obj["$1"] || "") + "');
// Return template function.
return new Function('obj', 'return "' + templateString + '";');
};
}());
関数を作成したら、テンプレート関数をmakeTemplate
定義して作成できます。html
var html = '<div id="targetdiv"><div class="Comments30" title="{@something1}"></div><div class="{@something2}" title="{@something3}"></div><div class="Comments30" title="{@something4}"></div></div>';
var template = makeTemplate(html);
テンプレート関数を取得したら、テンプレート関数を呼び出すことができます。
var interpolatedHtml = template({
something1 : "value1",
something2 : "value2",
something3 : "value3",
something4 : "value4"
});