Thymeleaf是一個Java庫。它是一個XML / XHTML / HTML5模板引擎,可以應用於轉換模板文件,以顯示您的應用程序產生的數據和文本。html
它尤爲適合於基於XHTML / HTML5的web服務應用程序,同時它能夠處理任何XML文件,做爲web或獨立的應用程序。web
Thymeleaf的主要目的是提供一個優雅和格式良好的方式建立模板。爲了實現這一目標,它把預約義的邏輯放在XML的標記和屬性上,而不是顯式放在XML標記的內容上。spring
依靠智能緩存去解析文件,導致其執行期間的I / O操做達到了最少數量,所以其處理的模板的能力實很是快速的。瀏覽器
開箱即用,Thymeleaf容許您處理六種模板,每一個被稱爲樣板。緩存
以上均可以提供格式良好的XML文件,除了Legacy HTML5,Legacy HTML5有些特色的結構不是很好,好比單獨的tag(沒有關閉的tag),tag的value沒有寫,或者沒有寫在引號之間。爲了解決這個問題,Thymeleaf會先把文件轉換成格式良好的XML文件。網絡
注意,驗證只用於XML和XHTML模板。架構
然而,這些並非惟一Thymeleaf能夠處理的模板,用戶老是可以定義他/她本身的模板,任何能夠被建模爲一個DOM樹(不必定非得是XML)均可以被有效地處理。框架
Thymeleaf是一個極其可擴展的模板引擎(事實上它應該更好地稱爲一個模板引擎的框架),容許您徹底定義將在您的模板處理,及將如何被處理的DOM節點,。性能
被賦予必定邏輯的DOM節點被稱爲處理者,加上一些額外的功能——被稱爲方言,Thymeleaf的核心庫提供了一個開箱即用的,應該足夠大比例的用戶的需求的東西稱之爲標準方言。學習
本教程涵蓋的,在接下來的內容中將學習定義的每一個屬性和語法功能的方言是標準方言。,即便沒有明確說起。
固然,若是用戶想利用庫的的高級特性定義本身的處理邏輯,用戶能夠建立本身的方言(甚至擴展標準方言)。模板引擎能夠一次同時配置多個方言。
官方thymeleaf-spring3和thymeleaf-spring4都被定義爲「Spring Standard Dialect(spring標準方言)」,至關於標準的方言,他們更好地利用Spring框架的一些特性(例如,經過使用Spring Expression language 代替Thymeleaf的標準OGNL)。若是你是一個Spring MVC的用戶,你不是在浪費時間,幾乎全部你在這裏學習的都將會在Spring應用程序中使用。
Thymeleaf標準方言能夠在任何模式中製做模板,尤爲適用戶web模板(XHTML和HTML5的)。除了HTML5,它也特別支持下面的XHTML規格:XHTML 1.0 Transitional, XHTML 1.0 Strict, XHTML 1.0 Frameset , 和 XHTML 1.1.。
大多數標準方言下的處理者是基於XML屬性的處理者。這容許瀏覽器在處理以前正確地顯示XHTML / HTML5模板,由於他們會簡單地忽略額外的屬性。舉個栗子,一個JSP使用標籤庫的片斷代碼不能直接被瀏覽器顯示:
<form:inputText name="userName" value="${user.name}" />
Thymeleaf標準方言將使咱們可以實現相同的功能,可是能夠被瀏覽器顯示:
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
當模板在靜態的瀏覽器中打開時,模板不只會正確顯示,並且咱們(可選)能夠指定一個值的屬性」James Carrot」,顯示。若是模板Thymeleaf處理後,$ { user.name } 會被替換成正確的值顯示在value上。
若是須要,這將讓你的設計師和開發人員工做在同一模板文件上,減小了須要將靜態原型轉換成模板文件的工做。這一般被稱之爲「Natural Templating」。
Thymeleaf的核心是一個DOM處理引擎。具體地說,它使用本身的高性能——DOM實現,而非的標準DOM API 來構建你的模板。
使用DOM的模板的方式很適合web應用程序,由於web文檔一般表示爲對象樹(事實上DOM樹是瀏覽器把web頁面存在內存中方式)。同時, 在大多數web應用程序中只使用一個幾十個模板,這些都不是大文件,在應用程序運行時,他們一般都不會改變,Thymeleaf對大多數模板處理操做使用了緩存,這樣只須要不多的I / O(若是有的話)。
若是你想要更多的細節,稍後在本教程中有一個完整的章節來介紹緩存。
然而,有一個限制,相比其餘模板解析/處理方法,這個架構須要使用更大的大量的內存空間來執行模板,這意味着你不該該使用其建立大數據的XML文檔(而不是web文件)。通常的經驗(根據JVM的內存大小),若是你生成單個XML文件大小在一個幾十兆字節時,我勸你最好不要使用Thymeleaf。
Thymeleaf尤爲適合工做在web應用程序中。他們都是基於一系列的每一個人都應該很清楚的標準,即便他們用了不少年。
隨着HTML5的出現,web標準比以往任什麼時候候都更加使人困惑…咱們將會從XHTML迴歸HTML ?咱們會放棄XML語法嗎?爲何沒有人談論XHTML 2.0了?
因此在閱讀接下來教程以前,強烈建議您閱讀一篇關於Thymeleaf的網絡文章「From HTML to HTML (via HTML)」,你能夠找到在這個地址:
http://www.thymeleaf.org/doc/articles/fromhtmltohtmlviahtml.html