javascript template engine

    //var data = {name: "iflytek", year: 1999};

    /**********************************************/
    var getTpl = function(tpl,data){
        var re = /<%([^%>]+)?%>/g;
        while (match = re.exec(tpl)) {
            tpl = tpl.replace(match[0], data[match[1]]);
        }
        return tpl;
    }
    /**********************************************/

    var TemplateEngine = function (tpl, data) {
        var reg = /<%([^%>]+)?%>/g,
            reExp = /(^( )?(if|for|else|{|}))(.*)?/g,
            code = 'var r=[];\n',
            cursor = 0;
        var add = function (line, js) {
            code += js ? line.match(reExp) ? line + '\n' : 'r.push(' + line + ');\n'
                : 'r.push("' + line.replace(/"/g, '\\"') + '");\n';
        }
        while (match = reg.exec(tpl)) {
            add(tpl.slice(cursor, match.index));
            add(match[1], true);
            cursor = match.index + match[0].length;
        }
        add(tpl.slice(cursor, tpl.length));
        code += 'return r.join("");';
        return new Function(code.replace(/[\r\t\n]/g, '')).apply(data);
    }

	//var loopTpl = 'name:<%this.info.name%>,site:<%this.info.site%>,building:<%for(var index in this.building){%><h5><%this.building[index]%>楼</h5><%}%>';
    //var data = {info:{name:'iflytek',site:'http://www.iflytek.com'},building:['A1','A2']};
    //var str = TemplateEngine(loopTpl,data);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值