记录一份最简洁只有15行代码的模板引擎!

 1 var TemplateEngine = function(html, options) {
 2     var re = /<%([^%>]+)?%>/g, reExp = /(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g, code = 'var r=[];\n', cursor = 0;
 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);
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 }

使用示例如下

var template = 
'My skills:' + 
'<%if(this.showSkills) {%>' +
    '<%for(var index in this.skills) {%>' + 
    '<a href="#"><%this.skills[index]%></a>' +
    '<%}%>' +
'<%} else {%>' +
    '<p>none</p>' +
'<%}%>';
console.log(TemplateEngine(template, {
    skills: ["js", "html", "css"],
    showSkills: true
}));

 

转载于:https://www.cnblogs.com/xiaoweiy/p/5808463.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值