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}" />

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是干什么的相关推荐

  1. 九、SpringBoot集成Thymeleaf模板引擎

    Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:"赛母李府",大部分中国 ...

  2. SpringBoot_web开发-thymeleaf语法

    我们看一下Thymeleaf的自动配置规则,我们得按照规则用起来,这里有一个自动配置,这里专门有一个thymeleaf,Thymeleaf的自动配置,ThymeleafAutoConfiguratio ...

  3. thymeleaf定义变量等

    thymeleaf烂透了. 以前说过,thymeleaf虽然是spring boot推荐的模板,但我认为,它跟asp.net的模板引擎razor比起来,处于幼儿园的水平.其对母板页的理解是有偏差的.r ...

  4. 【项目实战】个人博客(SpringBoot,SSM,thymeleaf,Semantic UI)——从设计思路到部署一站式教学

    一.前言 1.项目背景 此项目并非原创,项目原型是李仁密老师的作品,具体的教学视频来自b站https://www.bilibili.com/video/BV1nE411r7TF,不过up主貌似也是搬运 ...

  5. SpringBoot-web开发(三): 模板引擎Thymeleaf

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) 目录 1. 引入 ...

  6. [JAVA EE] Thymeleaf 常用工具类

    Thymeleaf 提供了丰富的表达式工具类,例如: #strings:字符串工具类 #dates:时间操作和时间格式化 #numbers:格式化数字对象的方法 #bools:常用的布尔方法 #str ...

  7. [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解

    模板布局 公共部分通常定义为模板布局:如页眉,页脚,公共导航栏.菜单等. 模板布局定义方法 布局页中用 th:fragment 定义模板片段,其他页面用 th:insert 引用片段 例如:foote ...

  8. [JAVAEE] Thymeleaf 基本语法:常用表达式

    Thymeleaf 基本语法 常用表达式 变量表达式 ${ } 使用方法:th:xx = "${ }" 获取对象属性值给 th:xx . 后台代码: Student s=new S ...

  9. [JAVAEE] 初识ThymeLeaf

    Thymeleaf 模板引擎 Thymeleaf 是一个服务器端 Java 模板引擎,适用于 Web 和独立环境, 能够处理 HTML,XML,JavaScript,CSS 甚至纯文本等. 常见的模板 ...

最新文章

  1. 深入浅出Redis五种基本数据类型
  2. Leetcode: Sort List
  3. 全球人工智能战略与政策观察(2019)
  4. ExtJS实战(10)-项目总结
  5. 十四、JavaScript表单中的验证API
  6. 帝国cms重置管理员_重新设计《纽约时报》 CMS飞行员
  7. ASP.NET Core中使用GraphQL - 第一章 Hello World
  8. 传递给系统调用的数据区域太小怎么解决_一口气说出“分布式追踪系统”原理!...
  9. object类型replace掉$、转换成float、运算
  10. 在centos上安装mysql
  11. Java从入门到跑路
  12. Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目
  13. MD4、MD5、SHA1、HMAC、HMAC_SHA1区别
  14. 运算放大器(运放)选型、参数分析以及应用OPA2350
  15. 6、numpy之文件保存与加载
  16. 2016全国大学生信息安全竞赛(Misc)
  17. 海康威视录像机刷linux系统,海康硬盘录像机怎么刷机?详尽图文刷机教程刷机工具亲测100%好用...
  18. 【线代】行/列分块矩阵中向量正交有什么用?如何表述?向量正交和线性无关有什么关系?
  19. 全网域名已注册、未注册批量查询工具
  20. pycharm python 依赖管理_怎么解决pycharm license Acti的方法_python

热门文章

  1. 使用esp8266 wifi芯片和DFRduino开发板(Arduino也可以),向自己的服务器发送请求(尽可能详细的说明)
  2. 视频播放开发笔记-获取MPV的视频内存方式截图
  3. 2020蓝天杯论文评比系统_获奖通报 | 铜山区在江苏省第十四届(2020年)“蓝天杯”中小学优秀教学设计评选中荣获佳绩...
  4. wan口设置已断开(服务器无响应),无线路由器wan口设置显示已断开
  5. 基于比例权重的位置加权关系的黑猩猩优化算法
  6. 如何在github上上传文件
  7. Jump lattice 跳格子
  8. MySQL的COUNT语句暗藏玄机
  9. FIELD-SYMBOLS 动态内表
  10. 【金融量化】深度学习在金融中的研究热点以及应用