layout: post
title: Spring Boot 2.x教程-Thymeleaf 原理是什么
categories: SpringBoot
description: Spring Boot 2.x教程-Thymeleaf 原理是什么
keywords: SpringBoot, Spring, Thymeleaf
如要要理清楚 Thymeleaf 的原理,那么就要從模板引擎的原理說起。Thymeleaf只不過是眾多模板中的一員,功能是一致的。
例如 JSP 也是一種模板。
1 Thymeleaf 模板原理
模板的誕生是為了將顯示與數據分離,模板技術多種多樣,但其本質是將模板文件和數據通過模板引擎生成最終的 HTML 代碼。Thymeleaf 亦是如此。
- 沒有模板
沒有模板前,我們可以直接用后端語言輸出HTML前端,並讓瀏覽器渲染。
- 有了模板
在有了模板后,后端語言只要輸出數據(例如 XML 格式、JSON 格式),把數據交給模板引擎,模板引擎根據模板文件和數據進行渲染成HTML文檔。
所謂模板引擎,需要把模板文件、數據解析到前端HTML文檔流展示給用戶看。
目前 Thymeleaf 是面向 Web 和獨立環境的現代服務器端 Java 模板引擎,能夠處理 HTML,XML,JavaScript,CSS 設置純文本。
2 Thymeleaf 模板引擎
Thymeleaf 可以處理 6 種類型的ember
- HTML
- XML
- TEXT
- JAVASCRIPT
- CSS
- RAW
Thymeleaf 支持HTML、JAVASCRIPT、CSS 這就意味着他完全兼容HTML代碼。
目前 Thymeleaf 可對下面幾種類型進行解析
- 文本
- 屬性
- 循環迭代
- 條件判斷
- 模板布局
- 局部變量
- 屬性優先級
- 注釋
- 內聯
- 文本模板模式
- 其他
我們以一個簡單的 Spring Boot 2.x教程-如何使用 Thymeleaf 示例來輸出來看看 Thymeleaf 是怎么工作的。
2.1 Thymeleaf 的 簡單示例
2.2 Thymeleaf 工作流程
我們需要提出幾個問題
- 當在控制層輸出對象,這些對象是怎么被引擎識別
在 Controller 層我們輸出了對象 user 和 users 兩個對象。這兩個對象則被模板引擎托管。
- 引擎加載模版文件的時候,如何識別需要替換的值
模板引擎根據 Controller 中的模板路徑 /demo/simple 找到相應的模板文件,模板文件中使用正則表達式查找模板標簽語言,Thymeleaf 模板引擎采用 th: 開頭。例如 th:value, th:text 。
- 最后引擎是如何吧控制層對象轉化成 html 等前段語言輸出的
模板引擎找到了模板文件中的模板表達式,模板引擎根據模板表達式中的內容來實現一種算法,算法把 Controller 輸出的對象匹配到模板表達式中。
引用