Thymeleaf教程 (一) 簡介

Thymeleaf是什麼?

Thymeleaf是一個Java庫。它是一個XML / XHTML / HTML5模板引擎,能夠應用於轉換模板文件,以顯示您的應用程序產生的數據和文本。

它尤其適合於基於XHTML / HTML5的web服務應用程序,同時它可以處理任何XML文件,作爲web或獨立的應用程序。

Thymeleaf的主要目的是提供一個優雅和格式良好的方式創建模板。爲了實現這一目標,它把預定義的邏輯放在XML的標記和屬性上,而不是顯式放在XML標記的內容上。

依靠智能緩存去解析文件,致使其執行期間的I / O操作達到了最少數量,因此其處理的模板的能力實非常快速的。

什麼樣的模板可以用Thymeleaf製作?

開箱即用,Thymeleaf允許您處理六種模板,每個被稱爲樣板。

  • XML
  • Valid XML
  • XHTML
  • Valid XHTML
  • HTML5
  • Legacy HTML5

以上都可以提供格式良好的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}" />
  • 1

Thymeleaf標準方言將使我們能夠實現相同的功能,但是可以被瀏覽器顯示:

<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
  • 1

當模板在靜態的瀏覽器中打開時,模板不僅會正確顯示,而且我們(可選)可以指定一個值的屬性”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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章