模板引擎的简单原理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 ...
随机推荐
- 如何制作一个可以用Bochs调试的最新内核系统盘
参考:http://blog.chinaunix.net/uid-26207112-id-3332621.html 1. 正确地创建一个包含启动分区的磁盘映像 1.1 创建磁盘映像文件 首先需要对磁盘 ...
- js 监听input 实现数据绑定
<!DOCTYPE html> <html> <head> <script> function checkField(val) { //alert(&q ...
- NSQ消息队列
前面的总结中提到过这个玩意,所以简单说说,win上面的测试验证 网上有比较合适的博文,我先推荐几篇 https://blog.csdn.net/a2247889821/article/details/ ...
- paint进阶(转)
转自:https://blog.csdn.net/cquwentao/article/details/51374994 概述 paint的基本绘制方法已经在前面的基本图形绘制中讲解了,这里做的是进阶讲 ...
- Java高频经典面试题(第一季)一:自增的分析
package will01; public class testZiZeng { public static void main(String[] args) { int i = 1; i = i ...
- jQuery HTML-设置
例子1 html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...
- 在 IntelliJ IDEA 中这样使用 Git,效率提升2倍以上
1.Git简介 Git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...
- String path = request.getContextPath();报错
String path = request.getContextPath();报错 1. 右击该项目 - Build Path - Configure Build Path , 在 Libraries ...
- apue 第4章 文件和目录
获取文件属性 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(c ...
- QT树莓派交叉编译开发环境搭建
QT树莓派交叉编译开发环境搭建 - JerryZone <Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2> <Qt for Em ...