一、问题现象

<script type="text/html" id="man_template">{{each  list as v i}}<tr><td>{{v.name}}</td><td>{{v.height}}</td><td>{{v.age}}</td></tr>{{/each}}
</script>
<script>var html=template("man_template",{list:[{name:'zhang',age:18,height:'180cm'}]});console.log(html);
</script>

输出:编译后完全没有信息

原因:{{each   list as v i}}此行多了个空格

二、artTemplate解析器的坑

e.parser = function (a) {a = a.replace(/^\s/, "");var b = a.split(" "), c = b.shift(), e = b.join(" ");switch (c) {case"if":a = "if(" + e + "){";break;case"else":b = "if" === b.shift() ? " if(" + b.join(" ") + ")" : "", a = "}else" + b + "{";break;case"/if":a = "}";break;case"each":var f = b[0] || "$data", g = b[1] || "as", h = b[2] || "$value", i = b[3] || "$index", j = h + "," + i;"as" !== g && (f = "[]"), a = "$each(" + f + ",function(" + j + "){";break;case"/each":a = "});";break;case"echo":a = "print(" + e + ");";break;case"print":case"include":a = c + "(" + b.join(",") + ");";break;default:if (/^\s*\|\s*[\w\$]/.test(e)) {var k = !0;0 === a.indexOf("#") && (a = a.substr(1), k = !1);for (var l = 0, m = a.split("|"), n = m.length, o = m[l++]; n > l; l++) o = z(o, m[l]);a = (k ? "=" : "=#") + o} else a = d.helpers[c] ? "=#" + c + "(" + b.join(",") + ");" : "=" + a}return a}

以下此行只使用单一空白分隔编译模板语法,输入多空格将导致b数组含有空串。

 var b = a.split(" "), c = b.shift(), e = b.join(" ");

artTemplate的空白输出坑相关推荐

  1. python输出乘法口诀-【每日一练】python输出 9*9 乘法口诀表

    原标题:[每日一练]python输出 9*9 乘法口诀表 无论学哪种程序,哪一门语言都对输出9*9 乘法口诀表情有独钟,记得学VB的时候,需要好长一段代码才实现,那么你知道用Python输出,需要几行 ...

  2. python编码口诀_【每日一练】python输出 9*9 乘法口诀表

    程序分析:分行与列考虑,共9行9列,i控制行,j控制列. 第一行: for i in range(1, 10): 创建一个从1到9的循环,并依次赋值给i 第二行: print() 这个是Python ...

  3. C++中 char* 、string、 char、char[]在各种情况下的输入与输出

    之前在自己练手写代码的时候总是会在字符串,字符这一块卡住,今天写下这篇文章给自己长长记性! 其实在代码过程中会遇到很多很玄学的问题.刚刚在尝试的时候找到了之前写的测试字符串的程序,放到另外一个工程里跑 ...

  4. 用Gitee Pages服务在线预览vue3前端项目:静态网站+多级路由+history模式(踩坑)

    目录 目标与前提 vue打包.预览遇到的坑以及原因 坑①:静态网站打开一片空白 坑②:子路由刷新或直接输入时,网页一片空白或404 坑③:首页加载时间过长 坑④:线上预览地址出错时,不显示404页面 ...

  5. php内置常用函数是哪些,PHP常用函数有哪些

    PHP常用函数有哪些 导语:PHP主要通过函数实现一些功能,那PHP常用函数有哪些呢?下面就由小编为大家介绍一下,欢迎大家阅读! 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2) ...

  6. 循环神经网络(RNN)简介

    人工神经网络介绍参考: https://blog.csdn.net/fengbingchun/article/details/50274471 卷积神经网络介绍参考: https://blog.csd ...

  7. Python外壳:代码结构!(推导式和函数 )

    推导式: 推导式是一个或者多个迭代器快速简洁的创建数据结构的一种方法. 它可以将循环和条件判断结合,从而避免语法冗长的代码. 悄悄告诉你,会使用推导式.很大程度上说明,你已经超过许多初学者啦· 也就是 ...

  8. 笨办法学python47 原理_41:学会说面向对象

    # 练习41.学会说面向对象 在这个练习中,我要教你如何说"面向对象",我要给你一些你需要知道定义的词.然后我会给你一组你必须了解的句子,最后我会给你一大堆练习,你必须完成这练习题 ...

  9. 深度学习笔记 第五门课 序列模型 第三周 序列模型和注意力机制

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

最新文章

  1. 20 年坚守,不忘初心!一封来自程序员的感谢信!
  2. 史上最快! 10小时大数据入门实战(五)-分布式计算框架MapReduce
  3. Java并发编程-并发工具包java.util.concurrent使用指南
  4. 百练OJ:2965:玛雅历
  5. 陌上花开 HYSBZ - 3262 (CDQ分治)
  6. datagrid 什么时候结束编辑_孕吐到底什么时候结束
  7. cpu负载转移内存_为什么将所有工作负载转移到云中是个坏主意
  8. 为什么很多人上班好好的,却选择去创业?
  9. 配置登入是显示服务器信息
  10. 2008.10 井冈山-金秋 【律动音符篇】
  11. Beta阶段第四次Scrum Meeting
  12. python之作业--------购物车优化
  13. 计算机数字合成音乐,数字音乐合成原理
  14. 物联网智能硬件解析之万能空调遥控器实现 Ardunio_通过红外线发射灯遥控空调
  15. 惠普电脑u盘重装系统步骤_惠普电脑重装系统图文教程
  16. Python爬取城市二手房数据
  17. VS2019 团队资源管理器--Git的使用(二)
  18. 论坛报名 | DataFunCon:用户画像论坛
  19. java list移除所有元素_Java - List集合中如何删除多个元素? remove( )方法 ?
  20. 饥荒控制台输入没用_饥荒联机版代码怎么用 代码输入没用解决方法

热门文章

  1. leetcode206. 反转链表
  2. linux开发亿连手机互联,亿连手机互联车载版下载-亿连手机互联车机版v6.6.1 安卓版-腾牛安卓网...
  3. [剑指offer]面试题34:丑数
  4. [蓝桥杯][历届试题]九宫重排-双向bfs和map标记
  5. Oulipo HDU - 1686(哈希或KMP)匹配字符串
  6. python升级pip在哪儿打开_Linux下升级python和安装pip的详解
  7. CoreJava 笔记总结-第九章 集合
  8. python中函数的参数类型( 位置参数、关键字参数、默认值参数和可变长度参数)
  9. 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D
  10. 【NOI2020】命运【树形dp】【线段树合并】