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

标签 javascript grails groovy

在 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/

相关文章:

excel - 如何通过电子邮件发送Excel Exporter插件的输出

mongodb - 在JMeter中使用Groovy查询Mongodb

grails - 性能问题碧 Jade 报告和grails/groovy

validation - Grails 域类验证器,属性必须大于另一个属性

java - 使用 httpClientBuilder 设置 httpVersion

javascript - 如何检测/选择从 JavaScript/JQuery 创建的元素?

javascript - 谷歌翻译在浏览器地址栏上写

javascript - 无法在文本框中添加小数

javascript - AngularJS:即时更改 ng-animate css

java - Jersey :找不到类的语法元素