- 注册时间
- 2011-3-21
- 最后登录
- 2022-3-22
- 在线时间
- 1191 小时
- 阅读权限
- 200
- 积分
- 9457
- 帖子
- 1256
- 精华
- 0
- UID
- 1
|
- <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>
复制代码 上面是一个使用例子。 看到那模板了么,写过 asp 的人一定不会陌生。
呵呵, 这是如何实现的呢, 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);
- };
- }();
复制代码 |
|