【问题标题】:Grails application.js not executingGrails application.js 未执行
【发布时间】:2014-05-29 17:09:24
【问题描述】:

我有一个 Grails (2.3.6) 应用程序,并包含 asset-pipeline 插件作为依赖项。在我的Config.groovy

plugins {
    // Lots of other stuff

    compile ":asset-pipeline:1.8.7"
}

myapp/web-app/js/application.js(由 Grails 为我生成)中,我只有以下一行代码:

alert("Hello!");

然后在我的grails-app/views/index.gsp:

<html>
    <head>
        <asset:javascript src="application.js" />
    </head>
    <body>
        ...
    </body>
</html>

当我执行 grails run-app 时,我没有看到我的 JS alert(...) 语句触发。我的application.js 文件位置是否不正确?我是否错误地配置了asset-pipeline 插件?还有什么我做错了吗?我只是想看看我的警报框!

此外,按照“将 CSS 放在顶部,将 JS 放在底部”的约定,我想知道是否有人可以插话我如何重新定位 application.js 以出现在&lt;body/&gt; 标签的底部。我的理解是asset-pipeline 资产只能在&lt;head/&gt; 内部工作。

【问题讨论】:

  • 如果您查看渲染页面的源代码,您会看到什么?看到包含的 js 了吗?
  • 感谢@JoshuaMoore (+1) - 不,我没有看到它包括在内。

标签: javascript grails asset-pipeline grails-plugin


【解决方案1】:

您的静态文件位于 grails-app/assets/ 中。详情请见organization

【讨论】:

  • 感谢@Ken (+1) - JS 在底部的位置如何(见最后一段)?
  • 我现在在我的 iPad 上,所以详细的答案会花我很长时间。请参阅有关清单的文档部分。您可以有两个具有不同清单的 js 文件,并将一个放在头部,一个放在正文的末尾。
【解决方案2】:

根据资产管道插件的documentation,您的资产应位于 grails-app/assets/ 目录结构下。每种资产都在一个子文件夹下,如下所示:

grails-app/assets/javascripts
grails-app/assets/images
grails-app/assets/stylesheets

将您的 application.js 移动到 javascripts 目录中,以便资产管道提取它。

【讨论】:

  • 感谢@Joshua Moore (+1) - 那么 JS 在底部的位置如何(见最后一段)?
  • 我没有尝试在 head 标签之外使用它,但是我怀疑它会在外面工作。试一试,看看它是否在你的身体内呈现正确的包含(我怀疑它会)。
  • 有趣...再次感谢@Joshua Moore(再次+1)。但是现在,当我简单地将application.js 包含为资产时,它似乎会自动注入位于assets/javascripts 下的任何JS 文件......这是典型的asset-pipeline 行为吗?此外,每个包含的 JS 文件的格式为:&lt;script src="/assets/&lt;name&gt;.js?compile=false type="text/javascript"&gt;&lt;/script&gt;。这是什么compile=false 参数?是什么让它变得虚假?我如何使它成为现实?
  • 我建议您花几分钟时间阅读文档。 compile=false 是因为您在开发模式下运行,默认情况下它不会在开发模式下编译。但是,您可以(请参阅文档)通过配置设置来更改它。就注入所有 js 文件而言,这是默认行为,除非您设置捆绑包/模块。同样,这一切都在文档中进行了解释。
猜你喜欢
  • 1970-01-01
  • 2012-10-24
  • 2012-06-25
  • 2015-07-05
  • 2020-07-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多