gpt4 book ai didi

javascript - 在 Grails 的 JavaScript 源代码中执行 groovy 语句

转载 作者:数据小太阳 更新时间:2023-10-29 04:24:15 26 4
gpt4 key购买 nike

在 Grails 中基本上有 2 个地方可以定义 JavaScript 函数,直接在 GSP 上的一个元素中,以及在/web-app/js 下的一个单独的 javascript 源文件中(例如,application.js)。我们在 application.js 中定义了一个常用的 javascript 函数,但我们还需要能够使用 groovy 代码动态生成部分函数。不幸的是,${some groovy code} 似乎没有在单独的 javascript 源文件中处理。

是通过在 GSP 页面上的脚本标记内定义 javascript 函数来实现此目的的唯一方法,还是有更通用的解决方案?显然,我们可以在模板 GSP 文件中的脚本标记中定义 javascript 函数,该文件将被重用,但是有很多插入力将我们的 javascript 函数一起定义在一个地方(即外部 javascript 源文件)。这也有性能优势(javascript 源文件通常只被每个客户端的浏览器下载一次,而不是在他们访问的每个 html 页面的源代码中重新加载相同的 javascript 函数)。我考虑过将函数分解为静态和动态部分的想法,将静态部分放在外部源中,将动态部分放在模板 GSP 中,然后将它们粘合在一起,但这似乎是一个不必要的 hack。

有什么想法吗?

(编辑:这听起来像是动态生成 JavaScript 函数的一部分的想法,然后下载一次并由客户端一遍又一遍地使用,这将是一个坏主意。但是,“动态的”部分"可能每周或每月仅更改一次,然后更改的幅度很小。大多数情况下,我们只希望从数据库中生成该片段,即使只有一次,而不是硬编码。)

最佳答案

保持 JavaScript 不显眼的一个简单解决方案是创建一个 JavaScriptController 并将其操作映射到“/js/*”,方法是将其添加到您的 UrlMappings.groovy 中。文件:

"/js/$action"{
controller = "javascript"
}

然后只需为您想要的每个动态 JS 文件创建一个操作,将其包含在您的布局 中,很快,您就有了一个可以将 Grails 片段插入其中的 JS 文件! :)

注意:我发现目前 Grails 中存在一个错误,它不能正确地将文件扩展名映射到内容类型,因此您需要包含 <%@ page contentType="text/javascript; UTF-8" %>在 View 文件的顶部。

关于javascript - 在 Grails 的 JavaScript 源代码中执行 groovy 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/425618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com