一个简单的模板引擎

var iBox = {
        /**
         * render
         * 取值:<%= variable %>
         * 表达式:<% if {} %>
         * 例子:
         *  <div>
         *    <div class="weui-mask"></div>
         *    <div class="weui-dialog">
         *    <% if(typeof title === 'string'){ %>
         *           <div class="weui-dialog__hd"><strong class="weui-dialog__title"><%=title%></strong></div>
         *    <% } %>
         *    <div class="weui-dialog__bd"><%=content%></div>
         *    <div class="weui-dialog__ft">
         *    <% for(var i = 0; i < buttons.length; i++){ %>
         *        <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_<%=buttons[i]['type']%>"><%=buttons[i]['label']%></a>
         *    <% } %>
         *    </div>
         *    </div>
         *  </div>
         * A very simple template engine
         * @param {String} tpl
         * @param {Object=} data
         * @returns {String}
         */
        render: function (tpl, data) {
            var code = 'var p=[];with(this){p.push(\'' +
                tpl
                    .replace(/[\r\t\n]/g, ' ')
                    .split('<%').join('\t')
                    .replace(/((^|%>)[^\t]*)'/g, '$1\r')
                    .replace(/\t=(.*?)%>/g, '\',$1,\'')
                    .split('\t').join('\');')
                    .split('%>').join('p.push(\'')
                    .split('\r').join('\\\'')
                + '\');}return p.join(\'\');';
            return new Function(code).apply(data);
        }
    };

使用实例:

<script type="text/template" id="billListTpl">
    <%
    for(var i=0; i<discoveredList.length; i++) {
        var item = discoveredList[i];
    %>
    <a class="weui-cell" href="javascript:;"
       data-state="<%=helper.stateFormat(item.status)%>"
       data-status="<%=item.status%>"
       data-orderNo="<%=item.orderNo%>"
       data-bankName="<%=item.bankName%>"
       data-tradeAmount="<%=item.tradeAmount%>"
       data-tradeTime="<%=item.tradeTime%>"
            >
        <div class="weui-cell__bd">
            <div class="title"><%=item.bankName%></div>
            <p class="desc"><%=item.tradeTime%></p>
        </div>
        <div class="weui-cell__ft">
            <div class="title">+<%=helper.tradeAmountFormat(item.tradeAmount)%>元</div>
            <p class="status"><%=helper.statusFormat(item.status)%></p>
        </div>
    </a>
    <% } %>
</script>
billListTpl = $("#billListTpl").text()
$container.empty().html(iBox.render(billListTpl, $.extend({helper:helper}, resp)));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值