1. var templateStr = "我的名字叫<%=name%>我是一只小狗,今年<%=age%>岁。";
  2. var data = {
  3. name:'旺财',
  4. age:'18'
  5. };
  6. /*会利用正则来匹配*/
  7. //console.log(/<%=\s*([^%>]+\S)\s*%>/.exec(templateStr));
  8. var match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);
  9. console.log(match);//['<%=name%>',name,....]
  10. //match[1]--->name match[0]----><%=name%>
  11. //data[match[1]]-->'旺财'
  12. //即将<%=name%> 用 '旺财' 进行替换
  13. templateStr = templateStr.replace(match[0],data[match[1]]);
  14. console.log(templateStr);
  15. match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);
  16. console.log(match);
  17. templateStr = templateStr.replace(match[0],data[match[1]]);
  18. console.log(templateStr);
  19.  
  20. /*while循环实现将字符串中的所有内容替换掉掉*/
  21. //匹配到<%=XX%>
  22. var match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);
  23. while(match){//match有值
  24. templateStr = templateStr.replace(match[0],data[match[1]]);//替换
  25. match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);//继续匹配<%=XX%>
  26. }
  27. console.log(templateStr);
  28.  
  29. //原理!!
  30. /*apply 改变函数的上下文当中的this的指向*/
  31. template.apply({name:'xgg'},['xgg','10']);
  32. /*也是一个方法也是一个函数*/
  33. var template = new Function('templateStr','data',
  34. 'var match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);while(match)
  35. {templateStr = templateStr.replace(match[0],data[match[1]]);
  36. match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr)}console.log(templateStr);');
  37. template(templateStr,data);
  38. var template = new Function('name','age','代码块');
  39.  

  

模板引擎的简单原理template的更多相关文章

  1. 【转链接】Handlebars模板引擎以及浅谈模板引擎的实现原理

    什么叫做“模板引擎“?我是这么理解的:就是对一些待填入数据的占位符的解析.如果你使用过Python的django框架,那你肯定是模板一点也不陌生.模板引擎就是解析模板的,把后端数据塞到前端页面模板. ...

  2. 【原创】javascript模板引擎的简单实现

    本来想把之前对artTemplate源码解析的注释放上来分享下,不过隔了一年,找不到了,只好把当时分析模板引擎原理后,自己尝试 写下的模板引擎与大家分享下,留个纪念,记得当时还对比了好几个模板引擎来着 ...

  3. doT.js模板引擎及基础原理

    时至今日,基于后端JavaScript(Node.js)和MVC思想也开始流行起来.模板引擎是数据和页面分离工作中最重要的一环,在各大门户网站均有利用到模板引擎. 模板引擎有很多种,但是原理了解也是非 ...

  4. SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆

    在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringB ...

  5. 2019-07-24 Smarty模板引擎的简单应用

    smarty是什么? Smarty是一个使用PHP写出来的模板引擎,是业界最著名的PHP模板引擎之一.Smarty分离了逻辑代码和外在的内容,提供一种易于管理和使用的方法,用来将原本与HTML代码混杂 ...

  6. 前端数据渲染及mustache模板引擎的简单实现

    早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式. 最最基础的,莫过于直接使用DOM接口创建所有节点. <div id="roo ...

  7. 理解模板引擎Razor 的原理

    Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...

  8. 理解模板引擎Razor 的原理(转载)

    Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...

  9. php模板引擎技术简单实现

    用了smarty,tp过后,也想了解了解其模板技术是怎么实现,于是写一个简单的模板类,大致就是读取模板文件->替换模板文件的内容->保存或者静态化 tpl.class.php主要解析 as ...

随机推荐

  1. 如何制作一个可以用Bochs调试的最新内核系统盘

    参考:http://blog.chinaunix.net/uid-26207112-id-3332621.html 1. 正确地创建一个包含启动分区的磁盘映像 1.1 创建磁盘映像文件 首先需要对磁盘 ...

  2. js 监听input 实现数据绑定

    <!DOCTYPE html> <html> <head> <script> function checkField(val) { //alert(&q ...

  3. NSQ消息队列

    前面的总结中提到过这个玩意,所以简单说说,win上面的测试验证 网上有比较合适的博文,我先推荐几篇 https://blog.csdn.net/a2247889821/article/details/ ...

  4. paint进阶(转)

    转自:https://blog.csdn.net/cquwentao/article/details/51374994 概述 paint的基本绘制方法已经在前面的基本图形绘制中讲解了,这里做的是进阶讲 ...

  5. Java高频经典面试题(第一季)一:自增的分析

    package will01; public class testZiZeng { public static void main(String[] args) { int i = 1; i = i ...

  6. jQuery HTML-设置

    例子1 html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...

  7. 在 IntelliJ IDEA 中这样使用 Git,效率提升2倍以上

    1.Git简介 Git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...

  8. String path = request.getContextPath();报错

    String path = request.getContextPath();报错 1. 右击该项目 - Build Path - Configure Build Path , 在 Libraries ...

  9. apue 第4章 文件和目录

    获取文件属性 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(c ...

  10. QT树莓派交叉编译开发环境搭建

    QT树莓派交叉编译开发环境搭建 - JerryZone <Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2> <Qt for Em ...