论坛首页 Java企业应用论坛

MeteorTL发布属性语法外套

浏览 3261 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-15  
MeteorTL模板引擎:
http://www.meteortl.org
http://meteortl.sourceforge.net

<html>
  <body>

    <!--标准语法 -->
    @if{users != null && users.size > 0}
    <table border="1">
      @for{user : users}
      <tr>
        <td>@{status.index + 1}</td>
        <td>@{user.name}</td>
        <td>@{user.coins}</td>
      </tr>
      @end
    </table>
    @end

    <!-- 注释版语法外套 -->
    <!--@if{users != null && users.size > 0}-->
    <table border="1">
      <!--@for{user : users}-->
      <tr>
        <td>@{status.index + 1}</td>
        <td>@{user.name}</td>
        <td>@{user.coins}</td>
      </tr>
      <!--@end-->
    </table>
    <!--@end-->

    <!-- 属性版语法外套 -->
    <table m:if="users != null && users.size > 0" border="1">
      <tr m:for="user : users">
        <td><span m:out="status.index + 1">james</span></td>
        <td><span m:out="user.name">james</span></td>
        <td><span m:out="user.coins">2</span></td>
      </tr>
    </table>

  </body>
</html>


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

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

欢迎大家提出新的语法构想。
   发表时间:2007-05-16  
这是楼主自己想的还是心语法?
0 请登录后投票
   发表时间:2007-09-07  
楼主的这个框架挺好。就是不知道性能怎么样,有没有与jsp和其它模板的性能对比测试?
0 请登录后投票
   发表时间:2007-09-07  
感觉不错,语法很对胃口,大概看了一下代码,定制能力很不错,比较关心的是稳定和性能。
一个问题:能否配置使用${}形式,毕竟这种方式比较通用,眼比较熟。因为主要用在邮件模板以及XML模板,没有JavaScript问题。
0 请登录后投票
   发表时间: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等缓存策略)
0 请登录后投票
   发表时间:2007-09-07  
crofton 写道
一个问题:能否配置使用${}形式,毕竟这种方式比较通用,眼比较熟。因为主要用在邮件模板以及XML模板,没有JavaScript问题。


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

跳转论坛:
Global site tag (gtag.js) - Google Analytics