11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

Thymeleaf 2.0 新特性一览

  • 2012-03-04
  • 本文字数:1656 字

    阅读完需:约 5 分钟

Thymeleaf 是一个面向 Java 的 XML/HTML 模板引擎,它的主要目标是提供格式良好的模板创建方式。 Thymeleaf 2.0 包含了许多新特性,其中包括为 Thymeleaf 扩展开发人员改善了扩展的创建过程。下面让我们快速浏览一下这些新增的特性:

性能

Thymeleaf 内部架构进行了重新设计,模板执行引擎被彻底重写。这意味着巨大的性能提升。基准测试显示执行时间从之前的4.19ms 降到现在的1.26ms。

th:switch/th:case

th:switch 中指定的表达式在估值后,会与内部 th:case 属性(attribute)中的表达式结果进行比较。其中“*”被用来指定默认选项。而在以前的版本中,开发人员需要为每一个 p 元素指定一个 th:if。

复制代码
<div th:switch="${user.role}">
<p th:case="'admin'">Administrator</p>
<p th:case="*">User</p>
</div>

th:remove=“all-but-first”

创建一个表格模板,一般意味着你会移除多余的占位符行。新的 th:remove=“all-but-first” 可以更轻松地完成这项工作。此前,开发人员必须为表格中所有待删除的行放上 th:remove="all"语句。

复制代码
<table th:remove="all-but-first">
<tr th:each="user : ${users}">
<td th:text="${user.name}">John</td>
</tr>
<tr>
<td>Joe</td>
</tr>
<tr>
<td>Mike</td>
</tr>
</table>

行号信息

在呼声最高的功能中,有一个呼声是希望 Thymeleaf 在解析模板碰到错误时能够输出行号信息。多亏新的模板引擎,现在这项功能已经有了。

DOM 选择器

Thymeleaf 1.1 中可以通过指定 XPath 表达式来包含模板片段。由于模板引擎重写,Thymeleaf 2.0 中使用了一个叫做“DOM 选择器”的功能替换了对 XPath 的支持。使用 DOM 选择器可以选择 DOM 中一块特定区域,也可以使用 XPath 语法的一部分子集。

  • /x 表示当前结点直接孩子中名字为 x 的元素结点;
  • //x 表示当前节点任意深度的子孙结点中名字为 x 的元素结点;
  • x[@z=‘v’] 表示名字为 x,且属性 z 的值为“v”的元素结点 ;
  • x[@z1=‘v1’ and @z2=‘v2’] 表示名字为 x,且属性 z1 和 z2 值分别为“v1”和“v2”的元素结点;
  • x[i] 表示名字为 x,且位置在兄弟结点中排在数字 i 的元素结点;
  • x[@z=‘v’][i] 表示名字为 x,属性 z 的值为“v”,且满足位置在兄弟结点中排在数字 i 的元素结点;

模板片段

新的模板引擎允许开发人员处理模板片段而不再是整个 XML 文档,例如,现在不需要 DOCTYPE 或文档根元素,且模板可以只是某个 XML 片段。

通用缓存基础架构(Generalized Cache Infrastructure)

Thymeleaf 2.0 更新了缓存基础架构,并给予开发人员控制缓存的用途以及怎样使用缓存。新的 ICacheManager 接口定义的扩展点,允许用户指定他们自己的 ICache 实现。StandardCacheManager 被列为 ICacheManager 的默认实现。

新的 XHTML DTD

新引入的 th:switch 和 th:case 属性需要 Thymeleaf DTD 中作出一些改变。以下是新的 DTD:

复制代码

替换 Java DOM API

Thymeleaf 2.0 从架构中移除了 Java DOM API,并替换成它自己的 DOM 表示。新的 DOM 为 Thymeleaf 量身订做,并且比旧标准更加简单。 它还包含了一些优化,可以让 Thymeleaf 在具有较少资源的情况下也可以较快地处理模板。

IProcessor

在 Thymeleaf 1.1 中,处理器被分为两组:属性处理器(attribute processor)和标签处理器(tag processor)。在 Thymeleaf 2.0 中,新的 DOM 泛化了模式,属性处理器和标签 / 元素处理器现在都是新的通用 IProcessor 接口的子级。这意味着处理器可以应用到任何 DOM 结点上,如元素、文本节点和注释等等。

通用模板模式(Generalized Template Modes)

Thymeleaf 2.0 泛化了模板模式,它可以让 Thymeleaf 扩展开发人员创建他们自己的模板模式,而不局限于 6 个标准的模板模式(XML,VALIDXML,XHTML,VALIDXHTML,HTML5 和 LEGACYHTML5)。模板模式现在必须在模板解析器配置中以字符串形式指定,而不是使用已经弃用的 TemplateMode 枚举。

想要了解更多信息,请访问 Thymeleaf 网站更新日志

查看英文原文: http://www.infoq.com/news/2012/02/thymeleaf-2-0

2012-03-04 03:224052
用户头像

发布了 125 篇内容, 共 32.1 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

排查指南 | 关于 mPaaS-iOS 小程序打不开问题的解决方案

蚂蚁集团移动开发平台 mPaaS

小程序 mPaaS

区块链技术在旅游业中的应用探索

CECBC

旅游

架构探索:事务处理三

而立斋

第八周-总结

jizhi7

跨越“数字鸿沟”,日本老年智能化服务的解法

脑极体

还在手写Operator?是时候使用Kubebuilder了

Java架构师迁哥

GaussDB(DWS)磁盘维护:vacuum full执行慢怎么办?

华为云开发者联盟

数据库 数据 DWS

年轻程序员不讲武德,做表竟然拖拉拽

雯雯写代码

程序员

金融科技 | 建设中台能力,助力开放生态

xcbeyond

金融科技 中台战略 中台架构

架构探索:事务处理二

而立斋

shell脚本的使用该熟练起来了,你说呢?(篇四)

良知犹存

shell脚本编写

Python最会变魔术的魔术方法,我觉得是它!

Python猫

Spring Boot 过滤器

噜噜猫

Spring Boot

mongodb 源码实现系列 - mongodb详细表级操作及详细时延统计实现原理(快速定位表级时延抖动)

杨亚洲(专注MongoDB及高性能中间件)

数据库 mongodb 性能调优 源码刨析 分布式数据库mongodb

甲方日常 67

句子

工作 随笔杂谈 日常

访问者模式及其在Java Parser中的应用

maijun

双十二好物推荐:「mPaaS 安全加固」带你看看别人家的应用

蚂蚁集团移动开发平台 mPaaS

安全 mPaaS 应用

API研发效能提升实战

Geek_40a463

研发效能 API研发

无可限量的数字经济

CECBC

数字经济

你心目中高级程序员的印象是什么样子的?

Java架构师迁哥

第八周课后练习

jizhi7

记一次神奇的MySQL死锁

废材姑娘

spring MySQ

以太公约系统开发详情丨以太公约源码案例

系统开发咨询1357O98O718

以太公约系统开发介绍

架构探索:事务处理总结

而立斋

阿里P8大佬带你全面了解—MySQL锁:03.InnoDB行锁

比伯

Java MySQL 编程 架构 程序人生

架构之书:传道与《设计模式》

lidaobing

架构 设计模式

Java并发编程:任务执行器Executor接口

码农架构

Java并发

学习笔记4

Qx

Python进阶——什么是描述符?

Kaito

Python

ISP芯片:如何让数字之眼“看清”真实世界?

脑极体

Thymeleaf 2.0新特性一览_Java_Bienvenido David_InfoQ精选文章