Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,可以应用于转换模板文件,以显示您的应用程序产生的数据和文本。html
它尤为适合于基于XHTML / HTML5的web服务应用程序,同时它能够处理任何XML文件,做为web或独立的应用程序。web
Thymeleaf的主要目的是提供一个优雅和格式良好的方式建立模板。为了实现这一目标,它把预约义的逻辑放在XML的标记和属性上,而不是显式放在XML标记的内容上。spring
依靠智能缓存去解析文件,导致其执行期间的I / O操做达到了最少数量,所以其处理的模板的能力实很是快速的。浏览器
开箱即用,Thymeleaf容许您处理六种模板,每一个被称为样板。缓存
以上均可以提供格式良好的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}" />
Thymeleaf标准方言将使咱们可以实现相同的功能,可是能够被浏览器显示:
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
当模板在静态的浏览器中打开时,模板不只会正确显示,并且咱们(可选)能够指定一个值的属性”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