读书人

MeteorTL公布属性语法外套

发布时间: 2012-10-29 10:03:53 作者: rapoo

MeteorTL发布属性语法外套
MeteorTL模板引擎:
http://www.meteortl.org
http://meteortl.sourceforge.net



两版语法外套都是在借鉴了其它模板及框架的基础上实现的。
属性版语法外套已在0.3.1版本完成。

语法外套的目标是维护html的WYSWYG以及简便性,
语法外套都会被预编译成标准语法。

欢迎大家提出新的语法构想。
1 楼 xly_971223 2007-05-16 这是楼主自己想的还是心语法?
2 楼 flash 2007-09-07 楼主的这个框架挺好。就是不知道性能怎么样,有没有与jsp和其它模板的性能对比测试? 3 楼 crofton 2007-09-07 感觉不错,语法很对胃口,大概看了一下代码,定制能力很不错,比较关心的是稳定和性能。
一个问题:能否配置使用${}形式,毕竟这种方式比较通用,眼比较熟。因为主要用在邮件模板以及XML模板,没有JavaScript问题。 4 楼 javatar 2007-09-07 flash 写道楼主的这个框架挺好。就是不知道性能怎么样,有没有与jsp和其它模板的性能对比测试?

关于性能方面:

(1)解析时,采用针对特定语法写的低级专有DFA解析器解析,比FreeMarker等使用通用抽象的E-BNF语法体系解析(Java中一般用JavaCC或AntLR)要快,因为E-BNF为了通用,考虑了太多因素。当然,E-BNF在处理复杂语法(比如要解析C/C++/Java的语法等时)很有优势,但MeteorTL的语法非常简单且统一,所以使用专有的解析器是比较好的选择,
准备把这一点也写到MeteorTL的优势中去,(BTW: Django模板的优势中也写着使用低级解析器)

(2)解析后,结果被表示成一个线程安全(不变类级)的指令树,可以在多线程中任意重复使用,避免使用重复解析或克隆等性能损耗。

(3)并且,解析结果可以被序列化冻结,系统重启后,可以从冻结结果直接还原,不必再解析,也就是说模板只有第一次加载时才需要解析。

(4)解析或还原的模板,都可以在内存中缓存起来,以减少IO量,并且缓存策略是可扩展的。(已内置实现了NONE, STRONG, SOFT, FIFO, LRU, MRU, OSCACHE, EHCACHE等缓存策略)
5 楼 javatar 2007-09-07 crofton 写道一个问题:能否配置使用${}形式,毕竟这种方式比较通用,眼比较熟。因为主要用在邮件模板以及XML模板,没有JavaScript问题。

语法是可以自定义的,可以查看:
语法定义:
org.meteortl.config.Syntax
语法注册:
org.meteortl.standard.StandardConfiguration#setSyntax
6 楼 javatar 2007-09-08 经过crofton一提醒,发现大家已经太习惯${}形式了,
而我考虑的JavaScript问题(即:在JS中经常用$()作为getElementById()取值,和${}容易混崤的问题)是否值得为此改变习惯?
思索良久,感觉使用习惯的方式,更容易被接受,对推广也更有益,
准备接纳crofton的想法,顺应习惯,将${}作为默认语法,
当然,继续保持语法的可自定义性,喜欢用其它标识符的也可以自己设置,
这是第二次向习惯妥协了,上一次是注释风格的更改:
http://javatar.iteye.com/blog/118734

读书人网 >软件架构设计

热点推荐