TinyTemplate模板引擎火热出炉,正式开源了~~~

涉水模板引擎领域,纯属不当心。
在此对如下人员表示强烈感谢与致敬:
@sub jetbrick做者
@sept
@webit webit做者
@罗格林 rythm做者
@闲.大赋 beetl做者
以及许许多多虽然没有列出来,可是在我写tinytemplate时帮助过个人人。 java

序言

原本是没有本身写一个模板引擎的计划的,由于按个人理解,一直认为这种“语言”级的引擎,难度是很是大的。总感受本身的水平不够,所以不敢有这个念头。直到大量使用Velocty的时候,碰到velocty诸多不尽如人意的地方,可是又无能为力,退回到JSP吧,又心不有甘。因而就指望着寻找一种语法结构接近velocty,可是又没有Velocity这些不方便之处的模板语言。因而进到一个模板语言群,一群大佬们个个至少是一个模板语言的做者,因而做者在里面表达了本身的指望,大佬们都介绍了本身的模板引擎,因而做者一个接一个的看源码,看文档。说实际,看文档,感受都很是不错,都有本身的特点,看语法也都不错,除了一部分本身特别关注的点没有以外,其余部分都很是不错了。可是距离本身的诉求仍是有差距,怎么办呢?因而就准备找一个最接近的模板引擎来进行必定的扩展,挑来挑去就挑中了jetbrick这个模板语言。 git

之因此挑中这个是由于如下几个缘由: web

  1. Antlr词法及语法文件编写很是清晰,对于我这种Antlr盲来讲,也能够看得懂,甚至能够照葫芦画瓢修改修改,这个很是重要,在后期进行许当的语法改进,这个就体现出优势了
  2. 代码质量较好,使用sonar进行进行分析,给的结果都仍是至关不错的,在做者看过的全部的模板语言中,算上成之选
  3. 语法结构与Velocity的很是接近,这点对我也很是重要,由于个人想法就是velocity语法有至关的接受度,与Velocity语法接近,velocity的一些使用者能够方便的进行切换
  4. 测试用例比较完善,在Tiny模板引擎完成以后,利用其测试用例进行测试发现了好几个BUG,说明仍是很是有效果的
  5. 环境搭建容易,直接下载源码,就能够安装成功,能够跑测试用例

好的,挑也挑了,选也选了,就开始编写TinyTemplate了,let's GO。 缓存

三天时间初步写好,又花了一周时间进行完善、测试、文档,因而就有了同窗们看到的TinyTemplate 框架

概述

Tiny模板引擎 是一个基于Java技术构建的模板引擎,它具备体量小、性能高和扩展易的特色。 适合于全部经过文本模板生成文本类型内容的场景,如:XML、源文件、HTML等等,能够说,它的出现就是为了替换Velocity模板引擎而来,所以在指令集上在尽可能与Velocity接近的同时,又扩展了一些Velocity不能很好解决问题的指令与功能,在表达多方面则尽可能与java保持一致,因此很是的易学易用。 函数

  1. 体量小表如今总共不到4000行的代码,去掉解析器近1000行,核心引擎只有不行3000行代码
  2. 性能高表如今与如今国内几款高性能模板引擎如:Jetbrick、webit等引擎的性能相比,近乎伯仲之间,可是比Velocity、Freemarker等则有长足的进步,效率大体是Velocity四倍
  3. 扩展性表如今Tiny框架引擎的全部环境均可以自行扩展,并与原有体系进行良好统一
  4. 易学习表如今Tiny框架概念清晰、模块划分科学、具备很是高的高内聚及低耦合
  5. 使用方式灵活表如今,能够多例方式、单例方式,并能够与Spring等有良好集成

简要特色介绍 布局

  • 相似于 Velocity 的指令方式,相同或类似指令达90%左右
  • 支持静态编译
  • 支持编译缓存
  • 支持热加载
  • 支持可变参数方法调用
  • 支持类成员方法重载
  • 支持函数扩展
  • 采用弱类型方式,对于模板层的代码编写约束更小,模型层怎样变化,模板层的代码调整都很是容易
  • 支持宏定义 #macro
  • 支持布局 Layout

性能

Tiny模板引擎采用编译方式,执行,所以比Velocity、FreeMarker等第一代模板引擎都快得多。可是因为使用了弱类型的方式,较强类型会稍慢一点,5%左右的性能差别,能够忽略不计。 性能

上述数据在同一台计算机上测得。 学习

与其它模板引擎比较

模板引擎名称 性能
功能
Velocity 4+倍 Velocity有的功能,所有支持,且作了大量扩展的新功能
FreeMarker 5+倍 说实际用得不是太多,因此功能方面就不便说了,理论上确定多许多功能
Jetbrick 性能略弱之3%左右 Tiny采用弱类型,Jetbrick采用强类型;Jetbrick的附加功能函数比较多,Tiny则扩展出一些新的功能,Tiny是在学习Jetbrick基础之上搞的。
HTTL 性能略弱之1%左右 Tiny采用弱类型,HTTL采用强类型;功能方面Tiny扩充许多弥补Velocity不足的功能。
BEETL 性能大体是其1.9倍左右 功能方面Tiny模板引擎天然会强,可是其市场应用状况较好,基础功能提供得比较多。
其余几种 性能对比看上图 功能方面没有深刻了解,所以没法评判。

目前TinyTemplate的健壮度还不够好,正在进行测试中。 测试

文档地址:

开发环境搭建:

先下载Tiny基础工程并安装之:

https://git.oschina.net/tinyframework/tiny

若是在install过程当中有问题,请对比FAQ修改

http://my.oschina.net/tinyframework/blog/206718

源码地址:

http://git.oschina.net/tinyframework/tiny

相关文章
相关标签/搜索