【发布时间】:2014-03-01 12:55:05
【问题描述】:
Thymeleaf 非常强调“自然模板”,这意味着所有模板都已经是有效的 XHTML 文件。我一直认为这是向前迈出的一大步,我可以在模板中生成片段,例如在 JSP 中我会写
<tagfile:layout title="MyPageTitle">
<jsp:body>
Main content goes here
</jsp:body>
</tagfile:layout>
我的“布局”-Tagfile 包含所有标题标签(标题、样式表的链接、...)、菜单并在正确的位置插入标题文本和正文。在设计我的 html 片段时,我不需要了解有关样式表菜单等的任何知识。
这与 Thymeleaf 的想法形成鲜明对比,Thymeleaf 鼓励我创建完整的 html 页面(包括示例菜单和所有标题)。虽然 Thymeleaf 的手册继续强调这是多么棒,但它从不处理重复代码问题:
- 我有一个生成菜单的模板,而我的所有其他模板(可能很多)都包含一个复制和粘贴的虚拟菜单,这样我就可以在没有服务器端生成机制的情况下在浏览器中查看模板。如果我有 100 个模板,这意味着可能存在完全相同的虚拟菜单 100 倍(在每个模板中)。如果我更改菜单的外观,创建新的虚拟菜单并没有完成,但我需要将新的虚拟菜单复制并粘贴到 100 个模板中。
- 即使我决定做一些简单的事情,比如重命名我的 CSS 文件,我也需要修改我的所有模板。
- 总是存在这样的危险,即我的模板在浏览器中看起来还不错,但生成的输出却被破坏了,因为......好吧......我破坏了它(可能就像拼写错误的变量名一样简单)。因此,无论如何我都需要使用实际生成来测试输出。
我是不是误会了什么?或者这确实是一种权衡?您如何最大限度地减少代码重复的影响?
【问题讨论】: