Thymeleaf的具体使用

  • 一、介绍
  • 1.1 和Vue、React、Angular等异同。
  • 二、使用
  • 2.1 常用的方法
  • 2.1.1 th:block
  • 2.1.2 th:replace
  • 2.1.3 th中标准表达式
  • 2.1.4 th:text
  • 2.1.5 th:each
  • 2.1.6 th:href
  • 2.1.7 th:src
  • 2.1.8 th:value
  • 2.2 使用的技巧
  • 2.2.1 三元表达式
  • 三、参考
  • 3.1 blog
  • 3.2 文档


一、介绍

thymeleaf是一个模板渲染的引擎,类似于Django中的jinja2的模板渲染功能,支持模板的渲染,可以在springboot中作为前端的模板引擎,将后端的数据进行渲染。

1.1 和Vue、React、Angular等异同。

  • 相同:
    在语法上thymeleaf的语法和vue的语法有点类似。同时都是前端展示的文本。
    在功能上thymeleaf是那个JSP的升级品,开发模式和JSP类似。
  • 不同
    vue等这些用于前后端分离的开发也是目前最为主流的开发模式,耦合度较低,而且开发效率比thymeleaf高。
    而thymeleaf则是需要通过数据渲染来完成,耦合度很高。thymeleaf可以直接打开,本质上还是一个超文本文件。而JSP则不能使用HTML文件打开,只能通过JSP的方法去解析,同时可以编写java代码。

二、使用

2.1 常用的方法

2.1.1 th:block

用于隔离代码块,配合replace进行代码替换。
待引入的部分代码

<th:block th:fragment="header">
    <header th:fragment="head" class="main-header">
	···
</th:block>

2.1.2 th:replace

可以用于替换代码块,比如在导航栏和侧栏可以替换成相同的代码块,以次来实现代码的复用。
引入的代码

<header th:replace="header :: head"  ></header>
   <div th:replace="asider :: sider"  ></div>

2.1.3 th中标准表达式

thymeleaf中的组织方法包括下面的几个,这几个方法可以帮助我们实现从thymeleaf中取值。

thymeleaf取值

Value

${…}

变量表达式。

*{…}

选择表达式。

#{…}

消息 (i18n) 表达式。

@{…}

链接 (URL) 表达式

。~{…}

片段表达式。

2.1.4 th:text

用于值的嵌入,这样就可以将文本嵌入到界面中

<td th:text="${score.courseId}">Misc</td>

2.1.5 th:each

用于循环,其中第一个值是循环的参数,第二个值是循环的对象,由后端提供。

<tr th:each="score:${score_list}">

2.1.6 th:href

作为资源链接,引入相应的资源如CSS等资源。

<link rel="stylesheet" href="../../static/plugins/morris/morris.css" th:href="@{/plugins/morris/morris.css}">

2.1.7 th:src

作为资源链接,引入js或者图片等资源。

<script src="../../static/plugins/jQuery/jquery-2.2.3.min.js" th:src="@{/plugins/jQuery/jquery-2.2.3.min.js}"></script>

2.1.8 th:value

给标签附上value的值

<a th:href="@{/student/score(vlaue=${session.user.account})}" id="requestScore" th:value="${session.user.account}">

2.2 使用的技巧

2.2.1 三元表达式

在使用的过程中我们经常会使用三元表达式来进行判断,以此实现多态。

<img th:src="${counselor.photoUrl == null || counselor.photoUrl == '' ? 'https://i.niupic.com/images/2020/07/30/8tmr.png' : counselor.photoUrl}" alt="个人照片" id="img">