Thymeleaf教程 (一) 简介

原创
2018/07/04 13:54
阅读数 288

Thymeleaf是什么?

Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,能够应用于转换模板文件,以显示您的应用程序产生的数据和文本。

它尤其适合于基于XHTML / HTML5的web服务应用程序,同时它可以处理任何XML文件,作为web或独立的应用程序。

Thymeleaf的主要目的是提供一个优雅和格式良好的方式创建模板。为了实现这一目标,它把预定义的逻辑放在XML的标记和属性上,而不是显式放在XML标记的内容上。

依靠智能缓存去解析文件,致使其执行期间的I / O操作达到了最少数量,因此其处理的模板的能力实非常快速的。

什么样的模板可以用Thymeleaf制作?

开箱即用,Thymeleaf允许您处理六种模板,每个被称为样板。

  • XML
  • Valid XML
  • XHTML
  • Valid XHTML
  • HTML5
  • Legacy HTML5

以上都可以提供格式良好的XML文件,除了Legacy HTML5,Legacy HTML5有些特点的结构不是很好,比如单独的tag(没有关闭的tag),tag的value没有写,或者没有写在引号之间。为了解决这个问题,Thymeleaf会先把文件转换成格式良好的XML文件。

注意,验证只用于XML和XHTML模板。

然而,这些并不是唯一Thymeleaf可以处理的模板,用户总是能够定义他/她自己的模板,任何可以被建模为一个DOM树(不一定非得是XML)都可以被有效地处理。

方言:标准方言

Thymeleaf是一个极其可扩展的模板引擎(事实上它应该更好地称为一个模板引擎的框架),允许您完全定义将在您的模板处理,及将如何被处理的DOM节点,。

被赋予一定逻辑的DOM节点被称为处理者,加上一些额外的功能——被称为方言,Thymeleaf的核心库提供了一个开箱即用的,应该足够大比例的用户的需求的东西称之为标准方言。

本教程涵盖的,在接下来的内容中将学习定义的每个属性和语法功能的方言是标准方言。,即使没有明确提及。

当然,如果用户想利用库的的高级特性定义自己的处理逻辑,用户可以创建自己的方言(甚至扩展标准方言)。模板引擎可以一次同时配置多个方言。

官方thymeleaf-spring3和thymeleaf-spring4都被定义为“Spring Standard Dialect(spring标准方言)”,相当于标准的方言,他们更好地利用Spring框架的一些特性(例如,通过使用Spring Expression language 代替Thymeleaf的标准OGNL)。如果你是一个Spring MVC的用户,你不是在浪费时间,几乎所有你在这里学习的都将会在Spring应用程序中使用。

Thymeleaf标准方言可以在任何模式中制作模板,尤其适用户web模板(XHTML和HTML5的)。除了HTML5,它也特别支持下面的XHTML规格:XHTML 1.0 Transitional, XHTML 1.0 Strict, XHTML 1.0 Frameset , 和 XHTML 1.1.。  

大多数标准方言下的处理者是基于XML属性的处理者。这允许浏览器在处理之前正确地显示XHTML / HTML5模板,因为他们会简单地忽略额外的属性。举个栗子,一个JSP使用标签库的片段代码不能直接被浏览器显示:

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

Thymeleaf标准方言将使我们能够实现相同的功能,但是可以被浏览器显示:

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

当模板在静态的浏览器中打开时,模板不仅会正确显示,而且我们(可选)可以指定一个值的属性”James Carrot”,显示。如果模板Thymeleaf处理后,$ { user.name } 会被替换成正确的值显示在value上。

如果需要,这将让你的设计师和开发人员工作在同一模板文件上,减少了需要将静态原型转换成模板文件的工作。这通常被称之为“Natural Templating”。

总体结构

Thymeleaf的核心是一个DOM处理引擎。具体地说,它使用自己的高性能——DOM实现,而非的标准DOM API 来构建你的模板。

使用DOM的模板的方式很适合web应用程序,因为web文档通常表示为对象树(事实上DOM树是浏览器把web页面存在内存中方式)。同时, 在大多数web应用程序中只使用一个几十个模板,这些都不是大文件,在应用程序运行时,他们通常都不会改变,Thymeleaf对大多数模板处理操作使用了缓存,这样只需要很少的I / O(如果有的话)。

 如果你想要更多的细节,稍后在本教程中有一个完整的章节来介绍缓存。

然而,有一个限制,相比其他模板解析/处理方法,这个架构需要使用更大的大量的内存空间来执行模板,这意味着你不应该使用其创建大数据的XML文档(而不是web文件)。一般的经验(根据JVM的内存大小),如果你生成单个XML文件大小在一个几十兆字节时,我劝你最好不要使用Thymeleaf。

在进一步讨论之前,你应该阅读…

Thymeleaf尤其适合工作在web应用程序中。他们都是基于一系列的每个人都应该很清楚的标准,即使他们用了很多年。  

随着HTML5的出现,web标准比以往任何时候都更加令人困惑…我们将会从XHTML回归HTML ?我们会放弃XML语法吗?为什么没有人谈论XHTML 2.0了?  

所以在阅读接下来教程之前,强烈建议您阅读一篇关于Thymeleaf的网络文章“From HTML to HTML (via HTML)”,你可以找到在这个地址: 
http://www.thymeleaf.org/doc/articles/fromhtmltohtmlviahtml.html

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部