新航路师徒学院

 找回密码
 立即注册
搜索
查看: 400|回复: 0

【新航路】解析模版tpl

[复制链接]

16

主题

23

帖子

93

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
93
发表于 2016-9-2 21:00:31 | 显示全部楼层 |阅读模式
  1. /**
  2.         * 解析模版tpl
  3.         * @method $.tpl
  4.         * @param {String} str 模板
  5.         * @param {Object} data 数据
  6.         * @example var data = {name: 'lilei'}; var str = "<h3><%=name%></h3>"; console.log($.tpl(str, data)); // => <h3>lilei</h3>
  7.         */
  8.         $.tpl = function(str, data){
  9.                 var tpl =  "var p=[],print=function(){p.push.apply(p,arguments);};" +
  10.                         "with(obj){p.push('" +
  11.                         str.replace(/[\r\t\n]/g, " ")
  12.                           .split("<%").join("\t")
  13.                           .replace(/((^|%>)[^\t]*)'/g, "$1\r")
  14.                           .replace(/\t=(.*?)%>/g, "',$1,'")
  15.                           .split("\t").join("');")
  16.                           .split("%>").join("p.push('")
  17.                           .split("\r").join("\\'")
  18.                         + "');}return p.join('');";

  19.                 fn = new Function("obj",tpl);
  20.                 return data ? fn( data ) : fn;
  21.         };
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

新航路师徒学院 ( 京ICP备16035622号

GMT+8, 2018-9-25 23:25 , Processed in 0.131536 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表