1.简介
1.1 什么是Thymeleaf
Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。
Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。 为实现这一目标,它以自然模板的概念为基础,将其逻辑注入模板文件,其方式不会影响模板被用作设计原型。 这改善了设计沟通,缩小了设计和开发团队之间的差距。
Thymeleaf也从一开始就设计了Web标准 - 特别是HTML5 - 允许您创建完全验证的模板,如果这是您的需要。
1.2 Thymeleaf可以处理哪些类型的模板?
Thymeleaf允许您处理六种模板,每种模板称为模板模式:
- HTML
- XML
- TEXT
- JAVASCRIPT
- CSS
- RAW
有两种标记模板模式(HTML和XML),三种文本模板模式(TEXT,JAVASCRIPT和CSS)和无操作模板模式(RAW)。
HTML模板模式将允许任何类型的HTML输入,包括HTML5,HTML 4和XHTML。 不会执行验证或良好性检查,并且将在输出中尽可能地遵守模板代码/结构。
XML模板模式将允许XML输入。 在这种情况下,代码应该是格式良好的 - 没有未封闭的标签,没有不带引号的属性等等 - 如果发现格式错误,解析器将抛出异常。 请注意,不会执行验证(针对DTD或XML架构)。
TEXT模板模式将允许对非标记性质的模板使用特殊语法。 此类模板的示例可能是文本电子邮件或模板文档。 请注意,HTML或XML模板也可以作为TEXT处理,在这种情况下,它们不会被解析为标记,并且每个标记,DOCTYPE,注释等都将被视为纯文本
JAVASCRIPT模板模式将允许在Thymeleaf应用程序中处理JavaScript文件。 这意味着能够以与HTML文件相同的方式在JavaScript文件中使用模型数据,但使用JavaScripts特定的集成,例如专门的转义或自然脚本。 JAVASCRIPT模板模式被视为文本模式,因此使用与TEXT模板模式相同的特殊语法。
CSS模板模式将允许处理Thymeleaf应用程序中涉及的CSS文件。 与JAVASCRIPT模式类似,CSS模板模式也是文本模式,并使用TEXT模板模式中的特殊处理语法。
RAW模板模式根本不会处理模板。 它用于将未经处理的资源(文件,URL响应等)插入到正在处理的模板中。 例如,外部的,不受控制的HTML格式的资源可以包含在应用程序模板中,安全地知道这些资源可能包含的任何Thymeleaf代码都不会被执行。
1.3 方言:标准方言
Thymeleaf是一个极易扩展的模板引擎(实际上它可以称为模板引擎框架),允许您定义和自定义模板处理的细节级别。
将一些逻辑应用于标记工件(标记,某些文本,注释或仅仅是占位符,如果模板不是标记)的对象称为处理器,这些处理器的集合 - 加上可能还有一些额外的工件 - 是什么 方言通常由...组成。 开箱即用,Thymeleaf的核心库提供了一种称为标准方言的方言,对大多数用户来说应该足够了。
请注意,方言实际上可以没有处理器,并且完全由其他类型的工件组成,但处理器绝对是最常见的用例。
本教程涵盖标准方言。 您将在以下页面中了解的每个属性和语法功能都由此方言定义,即使未明确提及。
当然,如果用户希望在利用库的高级功能的同时定义自己的处理逻辑,则可以创建自己的方言(甚至扩展标准方言)。 Thymeleaf也可以配置为一次使用多种方言。
官方的thymeleaf-spring3和thymeleaf-spring4集成包都定义了一种称为“SpringStandard方言”的方言,它与标准方言大致相同,但是为了更好地利用Spring框架中的某些功能(例如) ,使用Spring Expression Language或SpringEL代替OGNL)。 所以如果你是一个Spring MVC用户,你不会浪费你的时间,因为你在这里学到的几乎所有内容都将在你的Spring应用程序中使用
标准方言的大多数处理器都是属性处理器。 这使得浏览器甚至可以在处理之前正确显示HTML模板文件,因为它们只会忽略其他属性。 例如,虽然使用标记库的JSP可能包含不能由浏览器直接显示的代码片段,例如:
<form:inputText name="userName" value="${user.name}" />
Thymeleaf标准方言将允许我们实现相同的功能:
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
这不仅可以被浏览器正确显示,而且还允许我们(可选地)在其中指定值属性(在这种情况下为“James Carrot”),当在浏览器中静态打开原型时将显示该属性,并且 在处理模板期间,将由$ {user.name}的评估结果替换。
这有助于您的设计人员和开发人员处理相同的模板文件,并减少将静态原型转换为工作模板文件所需的工作量。 这样做的能力是一种叫做天然Templatin的功能
网友评论