是否有任何理由在 grails 中使用通过 TagLibs 公开给定库的 JavaScript 库插件,而不是直接使用它?

Posted

技术标签:

【中文标题】是否有任何理由在 grails 中使用通过 TagLibs 公开给定库的 JavaScript 库插件,而不是直接使用它?【英文标题】:Is there any reason to use JavaScript library plugins in grails that expose the given library via TagLibs instead of just using it directly? 【发布时间】:2011-12-23 20:45:36 【问题描述】:

如果您搜索 grails 插件站点,您会发现很多 JQuery 和其他 javascript 库的插件。其中大多数通过 Grails TagLibs 公开给定的 JavaScript 库功能。这真的是一个优势吗?如果是,为什么?

【问题讨论】:

【参考方案1】:

要回答您关于使用 TagLibs 公开 JavaScript 功能是否具有优势的实际问题,我的回答通常是否定的。但是你可能会得到与我同意的人一样多的人不同意我。尤其是那些花时间创建这些 TagLibs 的人。

我只是发现直接处理 JavaScript 比通过 taglib 更容易。我可能会考虑的唯一例外是给定远程标记库的 grails,但我个人仍然不使用它们。

【讨论】:

就我个人而言,有时我发现它们有点误导,尤其是如果您不使用远程标记库。此外,有时您会在门户网站上找到这些插件,并且您认为它们具有某种额外的功能,但您会发现它们所做的只是为您包含我认为无用的 javascript 标签。【参考方案2】:

就个人而言,我更喜欢使用 JavaScript 标签库而不是纯 JavaScript。例如,如果您想创建一个提交 AJAX 请求并使用响应更新 DIV 的链接,我发现它更容易编写

<g:remoteLink action="show" id="1" update="myDiv" 
        onLoading="showSpinner();">Click Me</g:remoteLink>

比对应的JavaScript。

如果您安装了 JQuery 插件并决定用 Prototype 替换 JQuery(例如),那么在您用 Prototype 插件替换 JQuery 插件后,上面的标签应该会继续工作。如果您只是将 .js 文件复制到 web-app/js(而不是使用插件),这是不可能的。

最终,如果您使用 JS 插件,您的应用程序“知道”哪些 JS 库正在使用。然后其他插件(例如resources)可以利用此信息为您带来优势。

【讨论】:

是的,正如您所指出的,我同意使用 grails 远程标签可能是有益的。但是,大多数 3rd 方标记库不是这样编写的。 在尝试了这两种方法后,我接受了您的回答。我发现使用带有诸如 remoteLink 之类的标签的插件可以使代码更简洁,并减少引入您自己的 JavaScript 错误的可能性【参考方案3】:

jQuery 只是对 javascript 库的扩展。它没有提供 Javascript 自身不提供的新功能。但是,在做(但不限于)

之类的事情时,它确实让您的生活轻松了很多 Dom 操作 树遍历 阿贾克斯 还有更多

当您只是在这里或那里做一些简单而小的事情时,没有必要。但通常情况下,当你在做一个大项目时,包含 jQuery(31 KB 和 1 个 HTTP 请求)并利用它来发挥你的优势是有意义的。

【讨论】:

这似乎没有回答问题。我认为 Pete 是在询问使用 Grails 标签包含 jQuery 与使用普通旧脚本标签相比的优势。 啊,我相信你是对的。我以为他在问问题的标题。

以上是关于是否有任何理由在 grails 中使用通过 TagLibs 公开给定库的 JavaScript 库插件,而不是直接使用它?的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何现有的 tag-lib 带有内置在 form-tag 中的 token-tag

是否有任何重要的理由在开关案例中使用枚举的序数,而不是使用枚举?

Grails 更新而不是删除

是否有任何理由不能使用 CSS 在 html 表格中的 <tr> 周围放置边框

是否有任何理由使用 (nr & 1 == 0) 而不是 (nr % 2 == 0) 来检查奇偶校验?

是否有任何理由对同一资源使用“Vary: *”和“Vary: Foo”响应?