​var templateStr = "我的名字叫<%=name%>我是一只小狗,今年<%=age%>岁。";var data = {name:'旺财',age:'18'};/*会利用正则来匹配*///console.log(/<%=\s*([^%>]+\S)\s*%>/.exec(templateStr));var match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);console.log(match);//['<%=name%>',name,....]//match[1]--->name   match[0]----><%=name%>//data[match[1]]-->'旺财'//即将<%=name%> 用 '旺财' 进行替换templateStr = templateStr.replace(match[0],data[match[1]]);console.log(templateStr);match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);console.log(match);templateStr = templateStr.replace(match[0],data[match[1]]);console.log(templateStr);/*while循环实现将字符串中的所有内容替换掉掉*///匹配到<%=XX%>var match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);while(match){//match有值templateStr = templateStr.replace(match[0],data[match[1]]);//替换match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);//继续匹配<%=XX%>}console.log(templateStr);//原理!!
/*apply 改变函数的上下文当中的this的指向*/template.apply({name:'xgg'},['xgg','10']);/*也是一个方法也是一个函数*/var template = new Function('templateStr','data','var match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr);while(match){templateStr = templateStr.replace(match[0],data[match[1]]);match = /<%=\s*([^%>]+\S)\s*%>/.exec(templateStr)}console.log(templateStr);');template(templateStr,data);var template = new Function('name','age','代码块');​

  

转载于:https://www.cnblogs.com/itlyh/p/6045754.html

模板引擎的简单原理template相关推荐

  1. Velocity模板引擎的简单使用

    一 简介 Velocity 是一个基于 Java 的模板引擎,它允许任何人仅仅简单的使用模板语言来引用由 Java 代码定义的对象,从而实现界面和 Java 代码的分离,使得界面设计人员可以和 Jav ...

  2. 前端进击笔记第十二节 掌握前端框架模板引擎的实现原理

    如今说起前端开发,基本上都离不开前端框架.随着前端技术不断迭代,前端框架相关的文档和社区日益完善,前端入门也越来越简单了.我们可以快速上手一些工具和框架,但常常会忽略其中的设计和原理. 对框架和工具的 ...

  3. php模板引擎如何实现,php模板引擎技术简单实现

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

  4. 前端开发--art-template模板引擎及实现原理

    #博学谷IT学习技术支持# 目录 简介 安装 使用步骤 ​编辑 art-template标准语法 值输出 原文输出 条件输出 循环输出 过滤器 模板引擎的实现原理 1.基本语法 2.分组 3.字符串的 ...

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

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

  6. php模板引擎jinja,django使用jinja2模板引擎报错: ‘django.template.backends.django.DjangoTemplates’...

    TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', # 配置Jinja2模板引擎 'DIRS': [os.path ...

  7. 模板引擎jsrender简单使用

    1.下载jsrender.js 2.简单使用 页面上: <table><thead><tr><th >序号</th><th>评论 ...

  8. Node.js 使用expresss,ejs模板引擎实现简单的登录注册

    express下如何使用ejs模板引擎 : 1-安装ejs 2-express下不需要导入ejs  只需要配置模板引擎 app.set("view engine","ej ...

  9. 模板引擎ejs简单介绍

    模板引擎: 将数据与标签分离开来,这样就不需要前面写的学生管理系统那样,在页面显示信息通过字符串的拼接的方式,而是直接用ejs模板引擎,将服务器端传过来的数据在页面直接显示出来,不会那样的麻烦了. e ...

最新文章

  1. 区块链共识机制及其迭代
  2. AspectJ和Spring AOP(java动态代理和CGLIB)简单介绍
  3. oracle中怎么查看存储过程的源码
  4. CentOS 7 - 最小化安装后,解决无法使用yum命令问题!!
  5. python【蓝桥杯vip练习题库】ALGO-118连续正整数的和(枚举优化)
  6. linux下1sa 密码失效,SA口令
  7. Android ViewStub的应用
  8. Leetcode905.Sort Array By Parity按奇偶排序数组
  9. 【C++基础学习】关于C++静态成员函数和变量
  10. 计算机基础说课稿十分钟,关于《计算机应用基础》的说课稿一、教材分析(说教材):.pdf...
  11. Go语言【第十四篇】:Go语言基础总结
  12. oracle数据库进程不释放,Oracle数据库案例整理-Oracle系统运行时故障-无法释放已经结束的进程资源导致进程死锁...
  13. c# textbox和listbox多行显示
  14. 三种近场通信技术的特点及未来趋势
  15. etal斜体吗 参考文献_论文参考文献格式要求
  16. MDI打开文件时指定目录
  17. 5g理论速度_5g速度一般是多少兆
  18. 光与夜之恋服务器维护,《光与夜之恋》2021年7月30日停服维护说明
  19. 第一代计算机外星人,Alienware外星人品牌发展史
  20. OpenCV:remap()简单重映射

热门文章

  1. 神经网络中BP(back propagation)到底在干些什么
  2. Java 包及访问权限
  3. LeetCode 616. 给字符串添加加粗标签(Trie树)
  4. LeetCode 455. 分发饼干(贪心)
  5. LeetCode 669. 修剪二叉搜索树
  6. npm安装vue_vue搭建脚手架的方式
  7. java sftp mget_总结三种Shell脚本编程中避免SFTP输入密码的方法
  8. java implements t_Java泛型——為什么“擴展T”允許而不是“實現T”?
  9. mysql错误日志为aborting_MySQL 错误日志(Error Log)
  10. 数学教育中的AI:NeurIPS’21 Workshop 欢迎投稿!