- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Grails 中, View 层有两种模块化机制:Template 和 TagLib。
当我编写自己的 Grails 应用程序时,当我需要编写 UI 组件时,我经常面临同样的问题:我需要使用模板还是 TagLib?
在网上搜索后,我没有找到很多关于此设计决策的最佳实践或经验法则,所以你能帮助我并告诉我:
最佳答案
肯定存在一些重叠,但以下是需要考虑的几件事。一种思考方式是,Template 就像是方法级别的复用,而 TagLib 更方便 API 级别的复用。
模板非常适合您必须设置特定显示格式的内容。例如,如果您想以特定方式显示域对象,通常在模板中更容易做到这一点,因为您基本上只是用一些 .它是可重用的,但我认为它的可重用性有点有限。 IE。如果您有模板,您会在几个页面中使用它,而不是在数百页中使用它。
另一方面,标签库是一个较小的功能单元,但您更有可能在很多地方使用它。在其中您可能会连接字符串,因此如果您希望创建一百行 HTML,则它们不太方便。标签库允许的一个关键功能是能够注入(inject)服务/与服务交互。例如,如果您需要一段代码来调用身份验证服务并显示当前用户,则只能在 TagLib 中执行此操作。在这种情况下,您不必担心将任何内容传递给 taglib - taglib 会从服务中找出它。您也可能在许多页面中使用它,因此拥有不需要参数的标记库会更方便。
还有几种标记库,包括允许的标记库你迭代某些东西 body ,有条件等等——那就是使用模板实际上不可能。正如我上面所说,精心设计的taglib库可用于创建可重复使用的 API,让您的 GSP代码更具可读性。在同一个 *taglib.groovy 中,您可以有多个标记定义,因此这是另一个区别 - 您可以将它们全部分组到一个位置,然后从一个标记库调用到另一个标记库。
此外,请记住,您可以从标记库内部调用模板,也可以使用模板调用标记库,以便您可以根据需要进行混合和匹配。
希望这能让您明白一点,尽管实际上很多内容是哪种构造更方便编码以及它被重用的频率。
关于templates - Grails:模板与 TagLib。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743441/
我正在尝试使用 Qt5 C++ 中的 TagLib 库 (1.11.1) 制作音乐播放器。我打开了多个文件并读取了标签。我遇到了两个困难。打开文件并读取标签后,我无法关闭文件并释放文件占用的内存。我使
我正在编写一个使用 taglib-ruby 的应用程序,这又取决于 Taglib .这样用户就不必自己下载和安装 taglib,我想将它与我的应用程序捆绑在一起。我没有太多做这种事情的经验,但我的感觉
我目前正在将我的 C# 应用程序迁移到 Qt/C++。我遇到了来自 TagLib 的长度问题。我发现奇怪的是 TagLib# 以毫秒为单位返回音频持续时间,而 TagLib 以秒为单位返回其(不正确的
在经历了大部分 PHP 开发人员的生活之后,我开始涉足 JSP。我对 Java 非常熟悉,所以我开始了解 Struts 作为我选择的 MVC 框架。 我无法理解为什么我应该使用 Struts 标记库而
所以我曾经这样配置我的标签库: myTags /WEB-INF/lib/mylib-2.0.1.jar 但是现在 mylib-2.0.1.jar 是一个 m
可以在 c-foreach 中使用 x-taglib var 喜欢: 谢谢 最佳答案 没关系,我自己用一种预类型转换解决了这个问题: 关于java - 将 x-taglib 与 c-
我正在使用Spring Boot。 我有一个带有以下标记库的JSP页面: 加载jsp页面时,出现以下错误: The absolute uri: http://www.springframewo
在我的 Grails 应用程序中,SecUser(使用 Spring Security 插件)和 Activity 之间的关系是一对多的。 我想在 index.gsp 中显示当前登录用户的最后事件 我
我正在尝试在grails中创建(我的第一个)taglib,除了我试图返回必须在表中显示的字符串列表/字符串数组之外,我有点不高兴了,但我得到的只是列表的第一个值。这是我得到的: 标签库: def ro
谁能推荐一个很好的taglib来引导系统工作? taglib应包含 bootstrap 的基本组件。 我已经搜索了GitHub和Grails插件。而且还没有成功找到带有“标准” bootstrap 组
我以这种方式获取 MP3 文件的持续时间: TagLib.File file = TagLib.File.Create(fileName); var duration = file.Propertie
我正在尝试使用 JSTL 在我现有的 JSP 代码中创建分页,但我不确定我在其中一个示例中看到的以下语法。 然后你运行一个查询: select system_id, emp
我正在尝试编写一个简单的程序来了解 TagLib (http://developer.kde.org/~wheeler/taglib.html) 的工作原理。该程序可以很好地处理代码中的注释。但是当我
我在我的 Qt 应用程序中使用 taglib 库 (1.7.2),从音乐文件夹中读取 mp3 文件的一些元数据。问题是我发现它很慢。 例如,这是代码: QString path = "C:/Music
TagLib#(TagLib sharp)的现状如何? 官方主页 www.taglib-sharp.com(由于停放在该地址的新站点的 NSFW 性质,链接已删除。-BtL)不再存在! 我在 ohlo
我正在尝试将新艺术家和标题 id3 标签保存到轨道中。从轨道加载标签效果很好,编辑轨道的标题也很好。但是当我尝试编辑 performer (artist) 时,它并没有改变任何东西。这是代码 publ
我有一个 JSP,我将开始使用 JSTL 标记库。所以我需要声明它,我按行做 但是我把这段代码放在哪里呢?在文件的顶部,在一切之前,还是在导入之后?有关系吗? 最佳答案 通常就在文件的顶部。如果您开
我正在使用 taglib 1.6.3 的 c 绑定(bind).使用 taglib_file_new 打开文件时, 消息被打印到标准错误。如何控制和使用这些消息?特别是,我想捕获并处理一些错误,其次我
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我有一个自己的 TagLib 和一个名为 boxLink 的标签生成远程链接并打开模态: Closure boxLink = { attrs, body -> Integer modalId
我是一名优秀的程序员,十分优秀!