Thymeleaf是用於Web和獨立環境的現代伺服器端Java模板引擎。
Thymeleaf的主要目標是將優雅的自然模板帶到您的開發工作流程中—HTML能夠在瀏覽器中正確顯示,並且可以作為靜態原型,從而在開發團隊中實現更強大的共同作業。Thymeleaf能夠處理HTML,XML,JavaScript,CSS甚至純文字。
Thymeleaf的主要目標是提供一個優雅和高度可維護的建立模板的方式。 為了實現這一點,它建立在自然模板的概念之上,以不影響模板作為設計原型的方式將其邏輯注入到模板檔案中。 這改善了設計溝通,彌合了前端設計和開發人員之間的理解偏差。
Thymeleaf也是從一開始就設計(特別是HTML5)允許建立完全驗證的模板。
開箱即用,Thymeleaf可以處理六種模板,每種模板都稱為模板模式:
有兩種標記模板模式(HTML和XML),三種文字模板模式(TEXT,JAVASCRIPT和CSS)和一種無操作模板模式(RAW)。
HTML模板模式將允許任何型別的HTML輸入,包括HTML5,HTML4和XHTML。 將不會執行驗證或格式檢查,並且在輸出中盡可能地遵守模板程式碼/結構。
XML模板模式將允許XML輸入。 在這種情況下,程式碼應該是格式良好的 - 沒有未封閉的標籤,沒有未加引號的屬性等等,如果發現格式錯誤,解析器將會丟擲異常。 請注意,將不會執行驗證(針對DTD或XML模式)。
TEXT模板模式將允許對非標記性質的模板使用特殊語法。 這種模板的例子可能是文字電子郵件或模板文件。 請注意,HTML或XML模板也可以作為TEXT處理,在這種情況下,它們不會被解析為標記,而每個標記,DOCTYPE,注釋等都將被視為純文字。
JAVASCRIPT模板模式將允許處理Thymeleaf應用程式中的JavaScript檔案。這意味著能夠像在HTML檔案中一樣使用JavaScript檔案中的模型資料,但是使用特定於JavaScript的整合(例如專門跳脫或自然指令碼)。 JAVASCRIPT模板模式被認為是文字模式,因此使用與TEXT模板模式相同的特殊語法。
CSS模板模式將允許處理Thymeleaf應用程式中涉及的CSS檔案。類似於JAVASCRIPT模式,CSS模板模式也是文字模式,並使用TEXT模板模式中的特殊處理語法。
RAW模板模式根本不會處理模板。它意味著用於將未觸及的資源(檔案,URL響應等)插入正在處理的模板中。例如,可以將HTML格式的外部非受控資源包含在應用程式模板中,從而安全地知道這些資源可能包含的任何Thymeleaf程式碼都不會被執行。
Thymeleaf是一個非常容易擴充套件的模板引擎(事實上,它可以被稱為模板引擎框架),允許您定義和客製化模板將被處理到一個很好的細節水平的方式。
一個將某些邏輯應用於標記工件(標籤,一些文字,注釋或者僅僅是模板不是標記的預留位置)的物件被稱為處理器,而這些處理器的集合(可能還有一些額外的工件)是方言組成。 開箱即用,Thymeleaf的核心庫提供了一種稱為「標準方言」的方言,對大多數使用者來說應該是足夠的。
本教學涵蓋了標準方言。 您將在後面的頁面中了解的每個屬性和語法功能均由該方言定義,即使未明確提及。
當然,如果使用者想利用庫的高階功能定義自己的處理邏輯,使用者可以建立自己的方言(甚至擴充套件標準方言)。Thymeleaf也可以組態為一次使用幾種方言。
標準方言的大多數處理器是屬性處理器。 這允許瀏覽器甚至在被處理之前正確顯示HTML模板檔案,因為它們將簡單地忽略附加屬性。 例如,雖然使用標記庫的JSP可能包含不能直接由瀏覽器顯示的程式碼片段,例如:
<form:inputText name="userName" value="${user.name}" />
Thymeleaf標準方言將允許實現相同的功能:
<input type="text" name="userName" value="Yiibai" th:value="${user.name}" />
這不僅可以被瀏覽器正確顯示,而且還允許(可選地)在瀏覽器中靜態開啟原型時指定一個值屬性(本例中為「Yiibai」),在處理模板期間被${user.name}
的評估結果值所取代。
這有助於設計人員和開發人員使用完全相同的模板檔案,並減少將靜態原型轉換為工作模板檔案所需的工作量。 這樣做的能力是一個稱為自然模板的功能。