Beetl:新一代Java模板引擎典範
阿新 • • 發佈:2018-07-22
類型 共享變量 支持 規則引擎 全局變量 for 控制語句 工具包 註解
Beetl是Bee Template Language的縮寫,它絕不是簡單的另外一種模板引擎,而是新一代的模板引擎,它功能強大,性能良好,秒殺當前流行的模板引擎。而且還易學易用。
什麽是Beetl
Beetl目前版本是2.8.5,相對於其他java模板引擎,具有功能齊全,語法直觀,性能超高,以及編寫的模板容易維護等特點。使得開發和維護模板有很好的體驗。是新一代的模板引擎。總得來說,它的特性如下:
- 功能完備:作為主流模板引擎,Beetl具有相當多的功能和其他模板引擎不具備的功能。適用於各種應用場景,從對響應速度有很高要求的大網站到功能繁多的CMS管理系統都適合。Beetl本身還具有很多獨特功能來完成模板編寫和維護,這是其他模板引擎所不具有的。
- 非常簡單:類似Javascript語法和習俗,只要半小時就能通過半學半猜完全掌握用法。拒絕其他模板引擎那種非人性化的語法和習俗。同時也能支持html 標簽,使得開發CMS系統比較容易
- 超高的性能:Beetl 遠超過主流java模板引擎性能(引擎性能5-6倍與freemaker,2倍於JSP。參考附錄),而且消耗較低的CPU。
- 易於整合:Beetl能很容易的與各種web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。
- 支持模板單獨開發和測試,即在MVC架構中,即使沒有M和C部分,也能開發和測試模板。
- 擴展和個性化:Beetl支持自定義方法,格式化函數,虛擬屬性,標簽,和HTML標簽. 同時Beetl也支持自定義占位符和控制語句起始符號也支持使用者完全可以打造適合自己的工具包。
- 可以擴展為腳本引擎,規則引擎,能定制引擎從而實現高級功能。
關於性能
在使用FastRuntimeEngine情況下,通過與主流模板引擎Freemarker,Vecloity以及JSP對比,Beetl6倍於Freemarker,2倍於JSP。這是因為宏觀上,通過了優化的渲染引擎,IO的二進制輸出,字節碼屬性訪問增強,微觀上,通過一維數組保存上下文Context,靜態文本合並處理,通過重復使用字節數組來防止java頻繁的創建和銷毀數組,還使用模板緩存,運行時優化等方法。詳情參考附錄
獨特功能
Beetl有些功能是發展了10多年的模板引擎所不具備的,這些功能非常利於模板的開發和維護,如下
- 自定義占位符和控制語句起始符號,這有利於減小模板語法對模板的傾入性,比如在html模板中,如果定義控制語句符號是
<!--:
和-->
,那麽,大部分模板文件都能通過瀏覽器打開。有的使用者僅僅采用了單個符號@
(或者單個符號“~
”)以及回車換號作為控制語句起始符號,這又能提高開發效率- 可單獨測試的模板。無需真正的控制層和模型層,Beetl的模板就可以單獨開發和測試
- 同時支持較為松散的MVC和嚴格的MVC,如果在模板語言裏嵌入計算表達式,復雜條件表達式,以及函數調用有幹涉業務邏輯嫌疑,你可以禁止使用這些語法。
- 強大的安全輸出,通過安全輸出符號!,能在模板變量,變量屬性引用,for循環,占位符輸出,try-catch中等各個地方提供安全輸出,保證渲染正常。
- 模板變量:運行將模板的某一部分輸出像js那樣賦值給一個變量,稍後再處理。利用模板變量能完成非常復雜的頁面布局(簡單的布局可使用include,layout標簽函數)
- 類型推測,能在運行的時候推測模板變量類型,從而優化性能,也可以通過註解的方法顯示的說明模板變量屬性(這是非必須的,但有助於IDE自動提示功能)
- 可插拔的設計,錯誤信息提示,模板引擎緩存機制,模板資源管理,本地調用的安全管理器,嚴格MVC限制,模板引擎本身都有默認的實現,但又完全可以自定義以適合特定需求
- 增強的語法,如for-elsefor, select-case,安全輸出符號!,省略的三元表達式 等,這些語法特別適合模板開發
- 局部渲染技術,結合現在js的ajax技術。
- 性能超高,具有最快的模板解釋引擎,同時,又有較低的CPU消耗。5-6倍於國內使用的Freemaker。適合各類模板應用,如代碼生成工具,CMS系統,普通網站,超高訪問量的門戶系統,和富客戶端JS框架整合的後臺管理應用
小白如何開始
- 需要通讀基本用法,大部分都是講解語法,而語法跟js很接近,所以可以快速預覽,但Beetl是針對模板設計, 所以像安全輸出,標簽和html標簽,全局變量,臨時變量和共享變量,布局技術,以及直接調用java代碼等還需要認真讀一遍。
- 如果從事web開發,還需要閱讀web集成裏的第一節“web提供的全局變量”,如果web裏還使用ajax技術,可以閱讀“整合ajax的局部渲染技術”。
- 包含有spring,jfinal,jodd,struts 等demo可以作為參考學習用https://git.oschina.net/xiandafu 任何問題,都可以在ibeetl.com 社區上提問。目前答復率是100%,提問需要詳細說明自己的期望,出錯信息,附上代碼或者圖片
原文鏈接: http://ibeetl.com
Beetl:新一代Java模板引擎典範