模板引擎的简单原理template
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','代码块');
模板引擎的简单原理template的更多相关文章
- 【转链接】Handlebars模板引擎以及浅谈模板引擎的实现原理
什么叫做“模板引擎“?我是这么理解的:就是对一些待填入数据的占位符的解析.如果你使用过Python的django框架,那你肯定是模板一点也不陌生.模板引擎就是解析模板的,把后端数据塞到前端页面模板. ...
- 【原创】javascript模板引擎的简单实现
本来想把之前对artTemplate源码解析的注释放上来分享下,不过隔了一年,找不到了,只好把当时分析模板引擎原理后,自己尝试 写下的模板引擎与大家分享下,留个纪念,记得当时还对比了好几个模板引擎来着 ...
- doT.js模板引擎及基础原理
时至今日,基于后端JavaScript(Node.js)和MVC思想也开始流行起来.模板引擎是数据和页面分离工作中最重要的一环,在各大门户网站均有利用到模板引擎. 模板引擎有很多种,但是原理了解也是非 ...
- SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆
在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringB ...
- 2019-07-24 Smarty模板引擎的简单应用
smarty是什么? Smarty是一个使用PHP写出来的模板引擎,是业界最著名的PHP模板引擎之一.Smarty分离了逻辑代码和外在的内容,提供一种易于管理和使用的方法,用来将原本与HTML代码混杂 ...
- 前端数据渲染及mustache模板引擎的简单实现
早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式. 最最基础的,莫过于直接使用DOM接口创建所有节点. <div id="roo ...
- 理解模板引擎Razor 的原理
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...
- 理解模板引擎Razor 的原理(转载)
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...
- php模板引擎技术简单实现
用了smarty,tp过后,也想了解了解其模板技术是怎么实现,于是写一个简单的模板类,大致就是读取模板文件->替换模板文件的内容->保存或者静态化 tpl.class.php主要解析 as ...
随机推荐
- 取余运算 C和python的区别
今天看书发现python与C的负数取余运算结果不同,查资料理解. 取余运算的算法是相同的 r = a- n*(a/n) n!=0 r是余数,a是被除数,n是除数.n不能为0,否则都会报错. 负数 ...
- 通过export方式导出,在导入时要加{ },export default则不需要
怎么就是记不住呢?? 通过export方式导出,在导入时要加{ },export default则不需要
- C语言|博客作业5
---恢复内容开始--- 一.本周教学内容&目标 第2章 用C语言编写程序-函数 2.5 生成乘方表与阶乘表.使学生对函数的定义和调用有初步的认识,能模仿编程. 二.本周作业头 问题 答案 这 ...
- python-前端Jquery
Jquery 高级版javascript 提供了更加便利的js使用方式 楔子 需求二:将上面的li标签实现隔行换色效果 js代码 <script> var obj = document.g ...
- c# Winform dev控件之ChartControl
1.改变颜色 字体颜色 背景颜色 XYDiagram dia = chartControl1.Diagram as XYDiagram; dia.AxisX.Label.TextColor = Col ...
- setleds - 设置键盘 led 标志
总览 (SYNOPSIS) setleds [-v] [-L] [-D] [-F] [{+|-}num] [{+|-}caps] [{+|-}scroll] 描述 (DESCRIPTION) setl ...
- 转载:tomcat过程原理
基于Java的Web 应用程序是 servlet.JSP 页面.静态页面.类和其他资源的集合,它们可以用标准方式打包,并运行在来自多个供应商的多个容器.Web 应用程序存在于结构化层次结构的目录中,该 ...
- iview table绑定双击事件
<Table <Table ref="table" highlight-row :columns="columns" :data="new ...
- oracle 数据库 锁
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁. 你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL session,如果这个锁表是正常业务你把se ...
- MySQL-常用引擎
来自:https://www.cnblogs.com/xujishou/p/6343431.html :https://www.cnblogs.com/laowenBlog/p/8405614.htm ...