Libon

实现一个模板引擎只需要 20 行

0 分钟 #JavaScript#HTML
用 20 行代码实现一个简单的模板引擎

ToC

1
function TemplateEngine(html, options) {
2
var re = /<%([^%>]+)?%>/g, reExp = /(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g, code = 'var r=[];\\n', cursor = 0, match;
3
var add = function(line, js) {
4
js ? (code += line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n')
5
: (code += line != '' ? 'r.push("' + line.replace(/"/g, '\\\\"') + '");\\n' : '');
6
return add;
7
}
8
while(match = re.exec(html)) {
9
add(html.slice(cursor, match.index))(match[1], true);
6 collapsed lines
10
cursor = match.index + match[0].length;
11
}
12
add(html.substr(cursor, html.length - cursor));
13
code += 'return r.join("");';
14
return new Function(code.replace(/[\\r\\t\\n]/g, '')).apply(options);
15
}

Javascript-template-engine-in-just-20-line


CD ..