Thymeleaf是什么
首先,看一下官网的描述。
Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even plain text.
简而言之,Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本。
Thymeleaf有何优势
再看一下官网的描述。
The main goal of Thymeleaf is to provide an elegant and highly-maintainable way of creating templates. To achieve this, it builds on the concept of Natural Templates to inject its logic into template files in a way that doesn’t affect the template from being used as a design prototype. This improves communication of design and bridges the gap between design and development teams.
Thymeleaf has also been designed from the beginning with Web Standards in mind – especially HTML5 – allowing you to create fully validating templates if that is a need for you.
简单点说,就是Thymeleaf提供一种优雅且高度可维护的模板创建方式,可缩小设计团队与开发团队之间的差距。Thymeleaf也已经从一开始就遵从Web标准,尤其是HTML5,这就允许创建一些完全验证的模板。
可处理那些模板
Thymeleaf提供六种开箱即用的模板,均可以称为“模板模式”。
- HTML
- XML
- TEXT
- JAVASCRIPT
- CSS
- RAW
其中,有两种标记型模板模式(HTML
和XML
),三个文本型模板模式(TEXT
,JAVASCRIPT
和CSS
)和无操作型模板模式(RAW
)。
HTML
模板模式允许任何类型的HTML的输入,包括HTML5,HTML4和XHTML。不会进行任何验证或格式的正确性检查,并且模板代码/结构将在输出中得到最大程度的保留。
XML
模板模式允许XML输入。在此情况下,代码应该保持格式正确。没有未关闭的标签、没有未引用的属性等,如果发现不友好的格式,解析器将抛出异常。请注意,将不会执行任何验证(针对DTD或XML模式)。
TEXT
模板模式允许非标记性质的模板使用特殊的语法。此类模板的示例可能是文本电子邮件或模板化文档。请注意,HTML或XML模板也可以处理为TEXT
,在这种情况下,它们不会被解析为标记,并且每个标签、DOCTYPE、注释等都将被视为纯文本。
JAVASCRIPT
模板模式允许在Thymeleaf应用程序中处理JavaScript文件。这意味着能够以与在HTML文件中相同的方式,在JavaScript文件中使用模型数据,但是需要特定于JavaScript的集成,如专用转义或原始脚本。JAVASCRIPT
模板模式也会被认为是一种文本模式,因此可以使用与TEXT
模板模式相同的特殊语法。
CSS
模板模式允许处理Thymeleaf应用中涉及的CSS文件。与JAVASCRIPT
模式相似,CSS
模板模式也是文本模式,并使用TEXT
模板模式中的特殊语法处理。
RAW
模板模式不会处理所有模板,它旨在用于将未触及的资源(文件,URL响应等)插入正在处理的模板中。例如,可以将HTML格式的外部不受控制的资源包含在应用程序模板中,因为他们知道这些资源包含的任何Thymeleaf代码都将不会执行。
标准方言
Thymeleaf是一个扩展性非常好的模板引擎(实际上,它可以称为模板引擎框架),可自定义模板处理细节。
将某种逻辑应用于标记工件(标记,文本,注释或仅占位符)的对象称为处理器,那么这些处理器的集合(也许还有一些额外的工件)就是一个方言的组成。开箱即用的Thymeleaf核心库提供了一种称为Standard Dialect的方言,对于大多数用户而言,该方言就足够了。
当然,如果用户想要利用高级功能的同时,定义自己的处理逻辑,可以创建自己的方言(甚至扩展标准方言)。Thymeleaf也可以配置使用多种方言。
官方的thymeleaf-spring3和thymeleaf-spring4集成软件包都定义了一种称为“ SpringStandard Dialect”的方言,该方言与Standard Dialect大致相同,但进行了少量改动以更好地利用Spring Framework中的某些功能(例如,使用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}
将会被替换为为模板处理过程中评估所得的值。
这可以帮助您的设计人员和开发人员使用完全相同的模板文件,并减少将静态原型转换为工作模板文件所需的工作。执行此操作的功能称为自然模板化的功能。
我是银河架构师,十年饮冰,难凉热血,愿历尽千帆,归来仍是少年!
如果文章对您有帮助,请举起您的小手,轻轻【三连】,这将是笔者持续创作的动力源泉。当然,如果文章有错误,或者您有任何的意见或建议,请留言。感谢您的阅读!
文章不定时更新,可微信搜索「银河架构师」,精彩内容,先睹为快!