Thymeleaf之基本論述(方言、配置、註釋、優先級)

版權聲明:本文爲 小異常 原創文章,非商用自由轉載-保持署名-註明出處,謝謝!
本文網址:https://blog.csdn.net/sun8112133/article/details/107055785







在之前寫的博客中我已經很詳細的介紹過了 Thymeleaf 這款模板引擎了,在此只做簡單敘述,有興趣的小夥伴請參考我之前寫的博客:模板引擎之Thymeleaf

Thymeleaf 是一款高效的 Java 模板引擎。它遵循的是 自然模板,也就是原型即頁面,說的通俗點就是比如設計了一套 HTML 靜態頁面,將靜態頁面交給開發人員作二次開發,開發好的頁面和靜態頁面看到的整體風格是一致的。用 Thymeleaf 這款模板引擎的好處就是改善了設計與開發的溝通,大大提高了工作效率。這也是很多團隊選擇使用 Thymeleaf 的重要原因。

Thymeleaf 的好處還有很多,比如它的語法優雅易懂,底層使用了 OGNL 表達式,它也很好的遵循了 Web 標準,完美支持 HTML5。

Thymeleaf 模板引擎 就是 HTML 文件,這個文件默認應該放到 templates 目錄下,而其他的靜態資源(CSS、JS 等)應該放到 static 目錄下,因爲在 Spring Boot 中,static 目錄是默認掃描的目錄,而 templates 目錄是默認不掃描的。這個文件位置我們也可以通過一些配置來定義它。

大家需要注意的是,如果你使用了模板引擎,那麼必須通過控制器才能正確解析,否則直接訪問會原封不動的顯示出來。


一、Thymeleaf 方言

方言就是一個地方的語言而已。在 Thymeleaf 模板引擎 中有兩種方言可以使用標籤屬性。

1、使用 Thymeleaf 標籤屬性的方言

這種方式需要引入 Thymeleaf 命名空間。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<p th:text="${name}"></p>
</body>
</html>

2、HTML5 自定義屬性形式的方言

這種方言不需要引入 Thymeleaf 命名空間,它屬於 HTML5 裏的標準,用於自定義屬性。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<p data-th-text="${name}"></p>
</body>
</html>


二、Thymeleaf 配置

關於 Thymeleaf 的配置我在這裏簡單列舉幾項:

在之前的博客中我可能講過資源一旦修改,必須重啓程序才能生效。我們如果想實時看到 Thymeleaf 的效果,那麼必須將 熱部署(cache) 設置爲 false

文件位置 我們需要配置 文件前綴(prefix)文件後綴(suffix)

spring:
  thymeleaf:
  	encoding: UTF-8   # Thymeleaf 的編碼格式
  	cache: false      # 熱部署靜態文件(默認爲true)
  	mode: HTML5       # 使用 HTML5 標準(默認是HTML5)
  	prefix: classpath:/templates/   # 文件前綴(默認是classpath:/templates/)
  	suffix: .html     # 文件後綴(默認是.html)


三、Thymeleaf 註釋

1、標準 HTML/XML 註釋

<!-- 註釋內容 -->

2、Thymeleaf 解析器級註釋塊

解析器級註釋塊 只有在解析時會被註釋,靜態瀏覽時不會被註釋。當下面這段代碼在靜態的時候,會顯示 “註釋內容”;當這個模板被執行的時候,不會顯示 “註釋內容”。

<!--/*-->註釋內容<!--*/-->

3、原型註釋塊

原型註釋塊解析器註釋塊 恰恰相反,在靜態瀏覽(原型設計)時會被註釋,而在解析時不會被註釋。

<span>hello!</span>
<!--/*/
<div th:text="${...}">...</div>
/*/-->
<span>goodbye!</span>
  • 當原型設計時顯示的代碼如下:

    <span>hello!</span>
    <span>goodbye!</span>
    
  • 當解析時顯示的代碼如下:

    <span>hello!</span>
    <div th:text="${...}">...</div>
    <span>goodbye!</span>
    


四、Thymeleaf 屬性優先級

我們可以考慮一個問題,就是當在同一個標籤中寫入多個 th:* 屬性時,會發生什麼?它們哪個先執行?對於哪個屬性會先執行,我們要遵循 Thymeleaf 屬性的優先級。

<ul>
	<li th:each="item : ${items}" th:text="${item.description}">Item description here...</li>
</ul>

thymeleaf屬性優先級



博客中若有不恰當的地方,請您一定要告訴我。前路崎嶇,望我們可以互相幫助,並肩前行!



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