开源 Java 模板引擎 HTTL 1.0.0 发布
HTTL 是一个适用于 HTML 输出的开源 JAVA 模板引擎,可用于替代 JSP 页面,它的指令类似于 Velocity。
HTTL 采用类似于 JSP 的原理,将模板编译成 Java 字节码运行,但比 JSP 的 EL 更进一步,使用强类型推导,减少运行期反射和转型,更加快速.
源码地址: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