Beetl是一款全功能,性能優秀的國產模板引擎,可以廣泛用於動態頁面生成,靜態頁面生成,代碼生成,文本轉換,腳本和規則引擎等,從2011年來,一直維護,並得到國內用戶的肯定。
本次發布是3.0的第一個版本,3.0 版本相比於2.0,在文本處理和腳本引擎上做了增強
* Beetl支持自定義模板的定界符和站位符,Beetl3 允許再定義一對「站位符和定界符」,比如定義了模板的定界符<%%>,站位符${},你可以定義一對,比如<!--: --> 和 #{} 如下是一段模板。自定義定界符和佔位符有有助於和模板「融洽相處」
<!--: for(u in users){ --><span>${u.name},#{u.content} </span><!--:}-->
* HTML 標籤增強,可獲取父子關係,標籤定義的變量可導出到整個模板使用
<cms:define export="contents"/>//其他地方可以用conents<cms:foreach list="${contents}" var="c"><span>${c.title}</span></cms:foreach>
* 語法樹可定製,2.X版本如果要修改語法樹,寫的代碼較多,3.0能輕易的修改語法樹,實現自己特有邏輯,比如在線內容管理系統要求循及時模板寫錯了,循環運行超過不能超過1萬次,
@ while(true){ \\ 惡意寫法@}
3.0 能輕易修改while節點實現,通過GrammarCreator,替換自己的實現,從而限制while循環限制次數,Beetl的所有語法節點都可以被替換,以實現擴展需求,譬如 #{} 的實現需要xxs
@Override public PlaceholderST createTextOutputSt2(Expression exp, FormatExpression format) { check("TextOutputSt2"); return new YourXXSPlaceholderST(exp, format, null); }
YourXXSPlaceholderST 內部可以參考PlaceholderST.java實現,但增加了XSS校驗
* 提升了腳本API,Beetl 本身就是腳本引擎,Beetl3 增加了多個腳本&規則運行的API,可以方便的提供腳本功能
Map ret = groupTemplate.runScript("return 2*利率;",paras);Double d = ret.get("return");
* 片段渲染增強,Beetl允許只渲染模板的一部分,Beetl3增強了片段渲染功能。
* 語法糖,增加了諸如 x+=y ,user.age+=1這種語法.
* Beetl3內部做了較多改動,但性能還是一貫的優秀,沒有已知的模板引擎在性能上超過Beetl3
Maven
<dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.0.0.M1</version></dependency>