开源 Java 模板引擎 HTTL 1.0.0 发布

jopen 12年前

  HTTL 是一个适用于 HTML 输出的开源 JAVA 模板引擎,可用于替代 JSP 页面,它的指令类似于 Velocity。

  HTTL 采用类似于 JSP 的原理,将模板编译成 Java 字节码运行,但比 JSP 的 EL 更进一步,使用强类型推导,减少运行期反射和转型,更加快速.

  项目首页:http://httl.github.com

  源码地址:https://github.com/httl/httl

  下载地址:https://github.com/httl/httl/downloads

  变更日志:

  修复问题:

  1. 解决 foreach 和 if/else 联合使用时状态错乱问题。

  2. 解决 getIsXxx 属性解析出错问题。

  3. 解决文件加载未使用指定编码问题。

  4. 解决部分文件流打开后未关闭问题。

  5. 解决迭代 map 出错的问题,以及 Map 数据的类型推断问题。

  新功能:

  6. 支持单独的 macro 文件定义宏方法,通过 import.macros 配置加载。

  7. 增加 gt,ge,lt,le 符号,在属性语法时避免表达式出现 HTML 标签符。

  兼容优化:

  8. 静态方法不走 engine.getFunction ()查找实例,直接调用类的静态方法。

  9. 将所有配置的获取改为 setter 注入,比如:setInputEncoding (String)。

  10. 编译 Macro 时直接注入到模板属性中,并增加 template.getMacros ()方法。

  11. 渲染过程不改变传入 Map 的状态,保证模板渲染的无副作用性,以及多次渲染的幂等性。

  12. 优化 Profiler 性能分析发现的 ArrayIterator 引起的性能损耗问题。

  13. 将文本内容不编译到字节码中,改为从缓存中获取,防止内存 Perm 区过大,并提供 source.in.class 和 text.in.class 开关项。

  不兼容优化:(注:从旧版本升级到1.0.0请注意不兼容优化项)

  14. 将 define 指令名改成 var,以免和 velocity 的 define 指令理解混淆,影响所有旧模板,用户可全文替换。

  15. 去掉 block 指令,用#set (xxx = xxxmacro ())代替,影响使用 block 的模板。

  16. 将 com.googlecode.httl 改成 httl,影响 API 调用,重新 Ctrl+Shift+O 导入一下包名即可,类名没变。

  17. 将 com.googlecode.httl.support 改成 httl.spi,影响 httl.properties 中扩展点的配置,使用缺省配置值的,建议不要配到用户配置中。

  18. 将 filters 配置项改成了 value.filters,与 text.filters 对应用,影响 httl.properties 中 filter 扩展点的配置。

  19. 将 functions 配置项成了 import.methods,与 import.packages 以及 import.macros 对应,方便理解。

  20. 加号数字优先,即只要有一方为数字即换数字计算,如:"2" + 3,输出:5,而不是:23,如果要字符相拼双方都要为字符:"2" + 3.toString