Underscore.js 有一个很棒的_.template
功能,我建议您使用,但这是您可以在下面解决它的一种方法:
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"
});