Thymeleaf是前端开发模板,springboot默认支持。前端模板用法大多数是类似的jsp、thymeleaf、vue.js都有while\for\if\switch等使用,页面组件化等。
1.前端模板区别
jsp是前后端完全不分离的,jsp页面写一堆Java逻辑。
thymeleaf好处是html改造方便,可以独立预览。vue.js是完全前后端分离的。
2.快速入门
(1)新建springboot项目
# 关闭Thymeleaf的缓存 spring.thymeleaf.cache=false
(可忽略)可以开启热部署,maven,引入devtool,配置SpringbootApplication,Running Application
Update Policies ,选择 Update resources
准备index.html
<html xmlns:th="http://www.thymeleaf.org">
th:text ="${name}"
创建Controller
@GetMapping("/index")
String index(Model model){
model.setAttribute("name","html");
return "index"
}
3.Thymeleaf语法
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title></title>
</head>
<body>
<!--通过${}来获取model中的变量,是ognl表达式-->
<p th:text="${name}">测试</p>
<!--字符串拼接-->
<p th:text="|测试-${name}|"></p>
<!--对象,星号选择-->
<ul th:object="${user}">
<li th:text="*{title}"></li>
<li th:text="*{name}"></li>
<li th:text="*{age}"></li>
<!--if判断-->
<li th:if="*{isVip}=='1'" th:text="*{isVip}"></li>
<!--追加css-->
<li th:styleappend="*{isVip}=='1' ? 'margin-top:50px' : _"></li>
<li th:classappend="*{isVip}=='1' ? 'css_test' : _"></li>
</ul>
<style>
.css_test{
margin-top:50px;
background-color: red;
}
</style>
<!--内联js-->
<script th:inline="javascript">
var name =/*[[${user.name}]]*/ '李四';
console.log(name);
</script>
<!--内嵌变量 dates,${#dates.format(date, 'dd/MMM/yyyy HH:mm')}-->
<!--组件-->
<div th:replace="include::body"></div>
</body>
</html>
运行效果
3.引入静态文件
th:href="@{/blog/yummy-jekyll/plugins/jquery/dist/jquery.min.js}"
@表示static路径
假设html在templates目录下,
<link href="../static/blog/..."
th:href 与 href 的区别
href始终从端口开始作为根路径,如8080/channel/page/add
th:href会寻找项目路径作为根路径,如8080/dx/channel/page/add
4.定义组件及使用
th:fragment="header(title,keywords)" header是组件名称,后面是传递参数
使用方式: html页面::组件名称(参数)
th:replace="blog/yummy-jekyll/header::header('首页','My Blog')"