本文实例讲述了JavaScript模板引擎原理与用法。分享给大家供大家参考,具体如下:
一、前言
什么是模板引擎,说的简单点,就是一个字符串中有几个变量待定。比如:
var tpl='黑,我的名字叫& lt; %名称%祝辞,我\ ' m & lt; %年龄%比;岁。'; >之前通过模板引擎函数把数据塞进去,
var data=https://www.yisu.com/zixun/{“名称”:“巴雷特李”, “年龄”:“20” }; var=结果tplEngine (tpl、数据); 巴雷//黑,我的名字叫李,我20岁。 >之前那这玩意儿有什么作用呢?其实他就是一个预处理器(预处理),搞php开发的童鞋对Smarty必然是十分熟悉,自作聪明的家伙是一个php模板引擎,tpl中待处理的字符通过数据匹配然后输出相应的html代码,加之比较给力的缓存技术,其速度和易用性是非常给力的! JS模板也是一样的,我们的数据库里保存着数以千万计的数据,而每一条数据都是通过同一种方式输入,就拿上面的例子来说,我们不可能在数据库里存几千条“黑,我的名字…”,而是只保存对应的姓名和年龄,通过模板输出结果。
JS模板引擎应该做哪些事情?看看下面一串代码:
var tpl=' & lt; % (var=0;我& lt;this.posts.length;我{' + + +) “var=的文章[我];%在' + 如果(! post.expert & lt; %){%祝辞' + ’& lt; span>文章null“+ “& lt; %}{%祝辞' + “& lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”祝辞& lt; %。专家%比;在& lt; %。时间%祝辞& lt;/a> ' + “& lt; %} %比”+ “& lt; %} %比”; >之前一个基本的模板引擎至少可以保证上面的代码可以正常解析。如送入的数据是:
var data=https://www.yisu.com/zixun/{“帖子”:[{ “专家”:“1”内容, “时间”:“昨天” },{ “专家”:“2”内容, “时间”:“今天” },{ “专家”:“3”内容, “时间”:“明天” },{ “专家”:“”, “时间”:“eee” }) }; >之前可以输出:
& lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”在内容1 yesterday & lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”在内容2 today & lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”rel=巴獠縩ofollow”在内容3 tomorrow & lt; span>文章null >之前下面就具体说说这个模板引擎的原理是啥样的。
二,JS模板引擎的实现原理
1。正则抠出要匹配的内容
针对这一串代码,通过正则获取内容
var tpl='黑,我的名字叫& lt; %名称%祝辞,我\ ' m & lt; %年龄%比;岁。'; var data=https://www.yisu.com/zixun/{“名称”:“巴雷特李”, “年龄”:“20” }; >之前最简单的方式就是通过取代函数了:
var=结果tpl.replace (/& lt; %([^ %祝辞]+)& # 63;%祝辞/g函数(s0, s1) { 返回数据(s1); }); >之前通过正则替换,我们很轻松的拿到结果了,你可以去试一试,他正是我们想要的结果。但是这里又有了一个问题,改一下数据和tpl,
var tpl='黑,我的名字叫& lt; %名称%祝辞,我\ ' m & lt; % info.age %比;岁。'; var data=https://www.yisu.com/zixun/{“名称”:“巴雷特李”, "信息":{时代”:“20”} };JavaScript模板引擎原理与用法详解