Thymeleaf簡介

Thymeleaf是用於Web和獨立環境的現代服務器端Java模板引擎。

Thymeleaf的主要目標是將優雅的自然模板帶到您的開發工作流程中—HTML能夠在瀏覽器中正確顯示,並且可以作爲靜態原型,從而在開發團隊中實現更強大的協作。Thymeleaf能夠處理HTML,XML,JavaScript,CSS甚至純文本。

Thymeleaf的主要目標是提供一個優雅和高度可維護的創建模板的方式。 爲了實現這一點,它建立在自然模板的概念之上,以不影響模板作爲設計原型的方式將其邏輯注入到模板文件中。 這改善了設計溝通,彌合了前端設計和開發人員之間的理解偏差。

Thymeleaf也是從一開始就設計(特別是HTML5)允許創建完全驗證的模板。

Thymeleaf可以處理什麼樣的模板?

開箱即用,Thymeleaf可以處理六種模板,每種模板都稱爲模板模式:

  • HTML
  • XML
  • TEXT
  • JAVASCRIPT
  • CSS
  • RAW

有兩種標記模板模式(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}的評估結果值所取代。

這有助於設計人員和開發人員使用完全相同的模板文件,並減少將靜態原型轉換爲工作模板文件所需的工作量。 這樣做的能力是一個稱爲自然模板的功能。