thymeleaf第一篇:什么是-->为什么要使用-->有啥好处这玩意

Thymeleaf3.0版本官方地址

1 Introducing Thymeleaf

Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。

1.1what is 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.

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.

1.2 What kind of templates can Thymeleaf process?

开箱即用,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的集成,如专门的转义或自然脚本。JAVASCRIPT模板模式被认为是文本模式,因此使用与TEXT模板模式相同的特殊语法。

CSS模板模式将允许处理Thymeleaf应用程序中涉及的CSS文件。CSS模板模式与JAVASCRIPT模式类似,也是文本模式,使用TEXT模板模式的特殊处理语法。

RAW模板模式根本不会处理模板。它用来将未被触及的资源(文件、URL响应等)插入到正在处理的模板中。例如,HTML格式的外部不受控制的资源可以包含在应用程序模板中,因为可以安全地知道这些资源可能包含的任何Thymeleaf代码将不会被执行。

1.3 Dialects: The Standard Dialect

Thymeleaf是一个极易扩展的模板引擎(事实上,它可以称为模板引擎框架),它允许您定义和自定义模板处理细节的方式。
对某个文本(标记、一些文本、注释,或者仅仅是占位符)进行标记的一些逻辑称为处理器,而一系列的这些处理器的集合(也许还有一些额外的工件)组成了方言,开箱即用,Thymeleaf的核心库提供了一个方言称为标准方言,这应该足够大多数用户使用。

注意,方言实际上可以没有处理器,完全由其他类型的工件组成,但处理器绝对是最常用的用例。
本教程涵盖标准方言。您在以下几页中将了解的每个属性和语法特性都由这种方言定义,即使没有明确提到这一点。
当然,如果用户想在使用本此教程的高级功能的同时定义自己的处理逻辑,也可以创建自己的方言(甚至扩展标准方言)。Thymeleaf也可以配置为一次使用几种方言。


标准方言的大部分处理程序都是属性处理程序。这允许浏览器在处理HTML模板文件之前正确显示,因为它们会忽略附加属性。例如,虽然使用标记库的JSP可能包含不能由浏览器直接显示的代码片段,例如:

<form:inputText name="userName" value="${user.name}" />

…the Thymeleaf Standard Dialect would allow us to achieve the same functionality with:

<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />

这不仅能被浏览器正确显示,而且还允许我们(可选地)在浏览器中指定一个值属性(此处为James Carrot®),当原型在浏览器中静态打开时,该属性将显示。模板处理时,用${user.name}的计算值代替。

温馨提示:Thymeleaf 最为显著的特征是增强属性,任何属性都可以通过th:xx 来完成交互,例如th:value最终会覆盖value属性。

这有助于设计器和开发人员处理相同的模板文件,并减少将静态原型转换为工作模板文件所需的工作量。这个能力可以称它为自然模板的功能。
以上就是我从官网上学到的,有的地方由于翻译出来反而没有英文原文好理解,故部分片段未进行翻译总结为自己的话语,接下来再分析。

总结

相较与其他的模板引擎,它有如下三个极吸引人的特点:
第一,Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。

这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。

第二,Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、改jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。

第三,Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

和以前其它技术对比

Thymeleaf基本可以完全替代JSP。

JSP作为网页开发老技术,负责开发动态网页功能,实现MVC的视图View功能。

但是在开发过程中,jsp的缺点是什么呢?

<% %>等等jsp标签,java代码块与html静态文件元素来回穿插,导致页面可读性差。

另外,jsp在使用后台传输的对象的时候,需要用到jstl技术,例如,value="${user.username}",这个还好。
如果在使用each迭代时,更是要使用到c标签库
<c:forEach var="user" items="${user}"> <c:forEach>
而thymeleaf则使用th:each="user:${user}",不需要像jsp一样引入很多标签库

但是!thymeleaf既然具有强大的功能,既然也有其不好的地方,就是过于严格,在jsp中
标签不加
也不会报错,但是thymeleaf必须严格遵守对称规则,必须要加上结束标签。

好了,今天就先大概了解下它的好处和原理,后面再学习它的方言和规则,可能不会太详细,大家可以用到的时候查它的官网文档,写的很好的。
可以参考此文章很好的写的:
SpringBoot Thymeleaf使用教程(实用版)

posted @ 2021-01-21 20:29  皮卡丘和羊宝贝😄  阅读(472)  评论(0编辑  收藏  举报