MyTpl高性能模板引擎

本文介绍了一款名为MyTpl的自定义模板引擎,强调其真实执行渲染及本地缓存机制。作者提到一些模板引擎仅用变量保存缓存,而非使用localStorage,这在实际应用中效果有限。MyTpl支持循环、条件判断、函数调用等功能,并允许定义额外变量。此外,文章提供了详细的使用示例和自定义配置方法,展示了其在不同场景下的应用。
摘要由CSDN通过智能技术生成

项目地址:https://github.com/NeverGiveUpLZ/MyTpl

 

之前发过一版本 https://blog.csdn.net/azazazazaz123456/article/details/80114452  不过这个版本过时了 

    很多模板引擎应用了缓存,我也看过有时候看着很搞笑,缓存并没有写入到 localStorage 等可以离线缓存地方,而是定义变量保存起来,这样的模板引擎基本就是忽悠人呢,来骗过模板引擎压力测试,页面刷新那些所谓的缓存也就当成垃圾被回收了,在实际中基本用不到,而useTpl则是真真实实的执行渲染了指定次数,所以测试数据量多少和模板字符串多少很重要

    开发这个引擎时候没有想过速度,不过开发出来,测试的速度还算可以,大神看到了不要笑话我,毕竟我不是搞前端的,我只是搞后台开发的

综合例子

https://github.com/NeverGiveUpLZ/MyTpl/blob/master/%E4%BE%8B%E5%AD%901-%E5%AD%97%E5%B8%96.html

 

   1我开发这个的时候为了小巧,没有可以注重速度方面
   2模板呢中两个空格以上将替换成一个空格
   3<!-- -->注释将被直接删除
  • 使用
<!-- 可以在模板中定义额外变量 -->
{{var list=[{id:1},{id:2}];}}

<!-- 模板中的循环  -->
{{for(var iu=0;iu<list.length;iu++):}}
	{{=list[iu].id}}
{{/for}}

<!-- 使用上面js定义的 foreach  -->
{{var pi=3.1415926;}}
{{var arr=[{id:1},{id:2}];}}
{{ [{id:1},{id:2}].each(function(val){ }}
	###{{=val.id}}###
{{ }); }}


<!-- 可以批量定义变量 支持换行 -->
{{
	var fg='6';
	var gh="ES";
	var exc=2;
}}

<!--输出变量-->
<>{{=gh+fg*exc}}<br>
{{=pi}}<br>
{{=key定义变量才能作为模板的值}}<br>


<!--判断-->
{{if( 1>3 ):}}
	++
{{elseif(3>4):}}
	+++
{{else:}}
	++++
{{/if}}

<br>
<!--for循环-->
{{for(var iu=0;iu<10;iu++):}}
	--
{{/for}}

 

<!-- 可以在模板中定义额外变量 -->
{{var list=[{id:1},{id:2}];}}

<!-- 模板中的循环  -->
{{for(var iu=0;iu<list.length;iu++):}}
{{=list[iu].id}}
{{/for}}

<!-- 使用上面js定义的 foreach  -->
{{var pi=3.1415926;}}
{{var arr=[{id:1},{id:2}];}}
{{ [{id:1},{id:2}].each(function(val){ }}
###{{=val.id}}###
{{ }); }}


<!-- 可以批量定义变量 支持换行 -->
{{
var fg='6';
var gh="ES";
var exc=2;
}}

<!--输出变量-->
<>{{=gh+fg*exc}}<br>
{{=pi}}<br>
{{=key定义变量才能作为模板的值}}<br>


<!--判断-->
{{if( 1>3 ):}}
++
{{elseif(3>4):}}
+++
{{else:}}
++++
{{/if}}

<br>
<!--for循环-->
{{for(var iu=0;iu<10;iu++):}}
--
{{/for}}

 

其他

   设置边界符
   var uefn=usetpl({tagBegin:'{>',tagEnd:'<}'});
   设置模板
   uefn=uefn(模板);
   进行渲染
   document.write(uefn(数据,true));

   直接渲染输出
   document.write(usetpl(模板,数据));
  • 注 下面的测试模板使用了自定义边界符,默认的边界符如下
   {
       tagBegin:'{{',
       tagEnd:'}}',
       tagOut:'='
   }
  • 模板临时定义变量
  {>var pi=3.1415926;<}
  或
  {>
  	var a=1;
  	var b='b';>
  	var c="c";
  	var a=10+5+a;
  <}
  • 输出
  {>=a<}
  或者输出参与计算
  {>=a+a*3<}
  • 模板中直接运行函数
   {>alert('123');<}
   
   假如系统定义增强函数 each 函数如下
   Array.prototype.each=function(c){ /*1.1*/
       for(var i=0,val;val=this[i++];){
           (c||empfunc)(val,i);
       }
       return this;
   };
   使用
   {> [{id:1},{id:2}].each(function(val,key){ <}
       {>=val.id<}
   {> }); <}
  • 判断 if 注意分号
   {>if( a>3 ):<}
       <span>a大于3</span
   {>elseif(a>4):<}
       <span>a大于4</span
   {>else:<}
  	<span>a不大于3也不大于4</span
  {>/if<}
  • 循环
  {>var list=[{id:1},{id:2}]; <}
  {>for(var k=0;k<list.length;k++): <}
  	{>=list[k].id<}
  {>/for<}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值