作家
登录

只有20行Javascript代码!手把手教你写一个页面模板引擎

作者: 来源: 2017-07-19 16:16:57 阅读 我要评论

我们甚至不须要显式地传参数给这个函数。我们应用apply办法来调用它。它会主动设定函数履行的高低文。这就是为什愦我们能在函数琅绫擎应用this.name。这里this指向data对象。

模板引擎接近完成了,不过还有一点,我们须要支撑更多复杂的语句,比如前提断定和轮回。我们接着膳绫擎的例子持续写。

  1. var template = 
  2.  
  3. 'My skills:' + 
  4.  
  5. '<%for(var index in this.skills) {%>' + 
  6.  
  7. '<a href=http://developer.51cto.com/art/201707/"#">' + 
  8.  
  9. '<%}%>'
  10.  
  11. console.log(TemplateEngine(template, { 
  12.  
  13.   skills: ["js""html""css"
  14.  
  15. }));  

这里会产生一个异常,Uncaught SyntaxError: Unexpected token for。如不雅我们调试一下,把code变量打印出来,我们就能发明问题地点。

当然,编译出来的结不雅也是对的。

  1. var r=[]; 
  2.  
  3. r.push("My skills:"); 
  4.  
  5. r.push(for(var index in this.skills) {); 
  6.  
  7. r.push("<a href=http://developer.51cto.com/"/">"); 
  8.  
  9. r.push(this.skills[index]); 
  10.  
  11. r.push("</a>"); 
  12.  
  13. r.push(}); 
  14.  
  15. r.push(""); 
  16.  
  17. return r.join("");  

带有for轮回的那一行不该该被直接放到数组琅绫擎,而是应当作为脚本的一部分直接运行。所以我们在把内容添加到code变量之前还要多做一个断定。

这里我们新增长了一个正则表达式。它会断定代码中是否包含if、for、else等等关键字。如不雅有的话就直接添加到脚本代码中去,不然就添加到数组中去。运行结不雅如下:

  1. var r=[]; 
  2.  
  3. r.push("My skills:"); 
  4.  
  5. for(var index in this.skills) { 
  6.  
  7.   r.push("<a href=http://developer.51cto.com/"#/">"); 
  8.  
  9.   r.push(this.skills[index]); 
  10.  
  11.   r.push("</a>"); 
  12.  
  13.  
  14. r.push(""); 
  15.  
  16. return r.join("");  
  1. My skills:<a href=http://developer.51cto.com/art/201707/

      推荐阅读

      人工智能与机器学习有哪些不同

    【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 传统的机械进修 【51CT>>>详细阅读


    本文标题:只有20行Javascript代码!手把手教你写一个页面模板引擎

    地址:http://www.17bianji.com/lsqh/36297.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)