首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理自然模板时的代码复制(例如Thymeleaf)?

问如何处理自然模板时的代码复制(例如Thymeleaf)?
EN

Stack Overflow用户
提问于 2014-03-01 12:55:05
回答 1查看 1K关注 0票数 8

Thymeleaf非常强调“自然模板”,这意味着所有模板都已经是有效的XHTML文件。我一直认为这是向前迈出的一大步,我可以在模板中生成片段,例如在JSP中我会编写

代码语言:javascript
复制
<tagfile:layout title="MyPageTitle">
  <jsp:body>
     Main content goes here
  </jsp:body>
</tagfile:layout>

我的“布局”-Tagfile包含所有的标题标签(标题,链接到样式表,.),菜单和只是插入标题文本和正文在正确的点。在设计我的html片段时,我不需要了解任何关于样式表、菜单等的知识。

这与Thymeleaf的想法形成了鲜明的对比,Thymeleaf鼓励我创建完整的html页面(包括示例菜单和所有标题)。尽管Thymeleaf手册继续强调这是多么伟大,但它从不处理代码复制问题:

  • 我有一个生成菜单的模板,所有其他模板(可能很多)都包括一个复制粘贴的虚拟菜单,这样我就可以在浏览器中查看模板,而无需服务器端生成机制。如果我有100个模板,这意味着完全相同的虚拟菜单存在100倍(在每个模板中)。如果我改变菜单的外观,它并没有创建一个新的虚拟菜单,但我需要复制和粘贴新的虚拟菜单到100个模板。
  • 即使我决定做一些简单的事情,如重命名我的CSS文件,我也需要触摸我的所有模板。
  • 我的模板在我的浏览器中看起来很好,但是生成的输出中断了,因为.好吧..。我打破了它(可能是一个拼写错误的变量名)。因此,无论如何,我都需要用实际的生成测试输出。

我是不是误解了什么?或者这真的是一种交换?如何将代码重复的影响降到最低?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-02 13:31:47

自然模板只是Thymeleaf中的一个选项。正如您在这里所读到的,http://www.thymeleaf.org/layouts.html有许多选项,包括您喜欢的分层布局方法(我建议您看看布局方言)。

然而,自然模板是首选和解释最多的布局选项,因为Thymeleaf是从底层开始考虑的,允许您进行静态原型开发(与大多数其他模板引擎不同)。但它并没有强迫你。

所以..。如何在现实世界中应用自然模板以避免代码重复成为一个问题?这取决于场景,但我们经常看到的一种模式是,人们创建完整的文档,为3-4甚至十几个应用程序模板创建自然模板,只有那些更有可能参与设计过程的模板--与设计师、客户交换--而且根本不将页眉和页脚复制应用于应用程序的其余模板中,从而使它们的创建和维护变得更加简单。

这样,您就可以拥有这两个世界中的最佳状态:一种在程序员、设计人员和客户之间交换完全可显示的页面的方法,以获得真正相关的页面;还可以减少重复代码的数量。

更重要的是,多亏了像Thymol这样的库(在上面链接的文章中引用),您甚至可以完全避免代码重复,在不运行应用程序的情况下,直接在浏览器中打开模板时,可以通过JavaScript动态插入片段。

希望这能有所帮助。

免责声明,根据StackOverflow规则:我是thymeleaf的作者。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22114657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档