在07的时候,写过一个模板引擎,当时叫CommonTemplate,后来功能越来越多,性能却越来越差,在金大为发给我性能对比结果后,看到惨不忍睹的差距,就打算抛弃原设计进行重写,但因工作忙,就搁置了,最近看温少发了几个EL和JSON的解析器,有点手痒,就抽了个周未,拿出来再改了改,主要将模板改成了字节码编译,并简化了语法及缩小使用范围,只针对HTML场景使用,并将名称改成了HTTL,名字含义是把HTML中的M(Marker)改成了T(Template),放在GoogleCode上:http://code.google.com/p/httl,性能和Java硬编码输出模板内容差不多,比Velocity/FreeMarker等快10倍左右。
语法方面的区别:
发现基于文本指令的,基于HTML标签的,基于HTML注释的,都有不少模板引擎实现,
为了标新立异以及使用的直观性,HTTL采用基于HTML属性的指令。
选型方面的区别:
Velocity采用JavaCC编译成AST树,解释执行。
FreeMarker类似,只是采用FreeCC。
Smarty4j采用ASM生成字节码。
HTTL采用先将模板转译成Java代码,再由JDK或Javassist编译成字节码。
性能测试:
模板内循环显示100行数据。
每模板各运行一万次。
模板大小约800字符。
模板每次运行输出内容约27K字符。
主页:http://httl.github.com/zh/
下载:https://github.com/httl/httl
来自:开源中国社区

