開源 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