第五章:視圖技術之-Beetl模板引擎

一、特性介紹

  • 功能完備:做爲主流模板引擎,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也支持自定義佔位符和控制語句起始符號也支持使用者徹底能夠打造適合本身的工具包。
  • 能夠擴展爲腳本引擎,規則引擎,能定製引擎從而實現高級功能。

二、安裝Beetl

<dependency>
   <groupId>com.ibeetl</groupId>
   <artifactId>beetl-framework-starter</artifactId>
   <version>1.1.49.RELEASE</version>
</dependency>

在Spring Boot中,beetl-framework-starter將自動配置以btl結尾的全部視圖,將自動使用Beetl渲染相應的resources/templates目錄下的視圖文件html

三、模板基礎配置

Beetl提供不但功能齊全,並且還有不少獨特功能,經過簡單的配置文件,就能夠定義衆多的功能,默認狀況下,Configuration類老是會先加載默認的配置文件(位於/org/beetl/core/beetl-default.properties,做爲新手,一般只須要關注3,4,5,6行定界符的配置,以及12行模板字符集的配置就能夠了,其餘配置會在後面章節陸續提到,同時,對於Spring等框架,有些配置將會被這些框架的配置覆蓋,須要參考後面章節)下,其內容片段以下:java

#默認配置
ENGINE=org.beetl.core.engine.DefaultTemplateEngine
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>
DIRECT_BYTE_OUTPUT = FALSE
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = #
HTML_TAG_BINDING_ATTRIBUTE = var
NATIVE_CALL = TRUE
TEMPLATE_CHARSET = UTF-8
ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler
NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
MVC_STRICT = FALSE

#資源配置,resource後的屬性只限於特定ResourceLoader
RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
#classpath 根路徑
RESOURCE.root= /
#是否檢測文件變化,開發用true合適,但線上要改成false
RESOURCE.autoCheck= true
#自定義腳本方法文件的Root目錄和後綴
RESOURCE.functionRoot = functions
RESOURCE.functionSuffix = html
#自定義標籤文件Root目錄和後綴
RESOURCE.tagRoot = htmltag
RESOURCE.tagSuffix = tag
#####  擴展 ##############
## 內置的方法
FN.date = org.beetl.ext.fn.DateFunction
......
##內置的功能包
FNP.strutil = org.beetl.ext.fn.StringUtil
......
##內置的默認格式化函數
FTC.java.util.Date = org.beetl.ext.format.DateFormat
.....
## 標籤類
TAG.include= org.beetl.ext.tag.IncludeTag

四、設置定界符號和佔位符

Beetl支持自定義定界符號和佔位符號,默認使用<% %>做爲定界符號,使用${}做爲佔位符號,也能夠配置本身喜好的佔位符,經常使用的有:web

@ 和回車符做爲定界符號;sql

<??>相似PHP符號;緩存

<!--#--> 使用HTML註釋符號做爲定界符號,加了一個#符號以區別正常的HTML註釋架構

能夠經過配置文件來設置定界符號,須要在resources目錄下建立一個beetl.properties文件,設置內容以下:app

DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>

後續講解,將採用「@」 和「回車換行」做爲定界符號,佔位符使用傳統的「${」和"}"。框架

五、配置Beetl

Beetl 爲了提升渲染性能,會在渲染模板後,緩存模板的語法解析結果,Beetl每次渲染錢都會檢測模板文件是否更新,若是已經更新,則從新解析模板。函數

因爲檢測模板是否更新會有一個I/O操做,所以線上系統能夠取消檢測,須要在application.properties中添加如下配置:工具

beetl-beetlsql.dev=false   

 

Beetl默認配置時自動檢測模板是否變化,但有的IDE並不會講resource/templates目錄下的文件變化同步到Maven工程的target目錄下,因此即便文件發生變化,Beetl也檢測不到,若出現情況,一個通用的辦法是講resource目錄設置爲src目錄,這樣resource目錄下的任何文件有變動都會同步到target目錄下 

載Spring Boot應用中,全部以btl結尾的模板都會交給Beetl模板引擎渲染,若是你喜歡一html結尾,須要在application.properties中添加如下配置項:

beetl.suffix=html

六、groupTemplate

相關文章
相關標籤/搜索