资讯专栏INFORMATION COLUMN

关于模板解析的经典实践

崔晓明 / 1777人阅读

摘要:概要摘录的的模板的部分代码,整理一下解析模板的思路。重点在正则的用法的掌握。

概要:摘录的jquery的模板的部分代码,整理一下解析模板的思路。重点在正则的用法的掌握。

分析代码内容



Name:""
解析后代码:
(function anonymous(obj) {
    var p = []
      , print = function() {
        p.push.apply(p, arguments);
    };
    with (obj) {
        p.push("  
"); for (i = 0; i < users.length; ++i) { p.push(" Name:"", users[i].name, " "
"); } p.push(" "); } return p.join(""); } )
解析部分
//匹配部分
str.replace(/[
	
]/g, " ")  // 将回车,换行,制表符 替换成空格,将代码拍平
  .split("<--").join("	")     //将替换部分的开始符替换成	,不要纠结,下面会解释为什么这么做
  .replace(new RegExp("((^|-->)[^	]*)"", "g"), "$1
")  //不以	开头的字符(可以没有)+"或者--> +	以外的字符(可以没有)+" ,如果满足条件,$1
里的$1为前面()的部分,相当于将"替换为
  .replace(new RegExp("	=(.*?)-->", "g"), "",$1,"")  // 	 为前面的<--,匹配下面模板中的 ,替换内容",$1," 即()内匹配到的users[i].name 加上前缀",和后缀,"
  .split("	").join("");")  //不符合上面规则的	即<--替换为");
  .split("-->").join("p.push("") //不符合上面规则的-->替换为p.push(");
  .split("
").join(""");   //第三行将"替换为",此处再替换回"


//模板部分
   

//<-- 变为了"); --> 变为p.push(" Name:"" //此处的"变为了" 被规则匹配为",users[i].name,"的单词分隔符
//<-- 变为了"); --> 变为p.push("

所以有两种用法,一种是承前启后 <-- 变为了"); --> 变为p.push("一种是分隔字符 ",$1,"

文例子出处:JavaScript Micro-Templating

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99758.html

相关文章

  • 假如时光倒流,我会这么学习Java

    摘要:看起来没有集合框架,线程,等那么耀眼,但它可是很多框架的基础啊回复反射查看相关文章,先把基础学会,后面的得用到它。 回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。[入门]我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单, 另外Java 的类库好用的让...

    bladefury 评论0 收藏0
  • css進階

    摘要:栅格系统用于处理页面多终端适配的问题。它表示抓取对象以后拖放到另一个位置。目前,它是标准的一部分。精简高效的命名准则方法这篇文章发布于年月日,星期日,,归类于相关。但是不会受到包含块的限制,可能会溢出。 一劳永逸的搞定 flex 布局 寻根溯源话布局 一切都始于这样一个问题:怎样通过 CSS 简单而优雅的实现水平、垂直同时居中。记得刚开始学习 CSS 的时候,看到 float 属性不由...

    import. 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0
  • Java经典

    摘要:请注意,我们在聊聊单元测试遇到问题多思考多查阅多验证,方能有所得,再勤快点乐于分享,才能写出好文章。单元测试是指对软件中的最小可测试单元进行检查和验证。 JAVA容器-自问自答学HashMap 这次我和大家一起学习HashMap,HashMap我们在工作中经常会使用,而且面试中也很频繁会问到,因为它里面蕴含着很多知识点,可以很好的考察个人基础。但一个这么重要的东西,我为什么没有在一开始...

    xcold 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<