| 
注册时间2011-3-21最后登录2025-4-11在线时间1191 小时阅读权限200积分9459帖子1256精华0UID1
 
   
 | 
| 上面是一个使用例子。 看到那模板了么,写过 asp 的人一定不会陌生。复制代码<script id="myTmpl" type="text/tmpl">
<% for (var i=0; i<10; i++) { %>
        <ul>
                <li class="li1"><span><%=name%></span></li>
                <li>电话:<%=tel%></li>
                <li>QQ:<a target="_blank" href="http://<%=qq%>.qzone.qq.com/"><%=qq%></a></li>
                <li><%=addr%></li>
        </ul>
<% } %>
</script>
<script type="text/javascript">
var context = {
          "qq"  : '78423497'
        , "addr": '中国·普宁'
        , "name": '混混'
        , "tel" : '186812345678'
};
var html = tmpl(document.getElementById('myTmpl').text, context);
document.write(html);
</script>
 呵呵, 这是如何实现的呢, tmpl 是怎样一个函数呢
 复制代码!function() {
        var cache = {};
        window.tmpl = function(strTmpl, args) {
                var __argNames = [];
                var __argValues = [];
                for (var a in args) {
                        __argNames.push(a);
                        __argValues.push(args[a]);
                }
                var funcs = cache[strTmpl] || function() {
                        var f = [ 'var __out__ = [];' ];
                        strTmpl.replace(/<%=([\d\D]*?)%>|<%([\d\D]*?)%>|([\d\D]+?)(?=<\%|$)/g, function($0, $1, $2, 
$3) {
                                if ($3) {
                                        f.push('__out__.push(unescape("', escape($3), '"));');
                                } else if ($1) {
                                        f.push('__out__.push(', $1, ');');
                                } else if ($2) {
                                        f.push($2, ';');
                                }
                        });
                        f.push('return __out__.join("")');
                        return new Function(__argNames.join(', '), f.join(''));
                }();
                cache[strTmpl] = funcs;
                return funcs.apply(args||{}, __argValues);
        };
}();
 | 
 |