JavaScript模板引擎原理与用法详解

  

本文实例讲述了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模板引擎原理与用法详解