从.js文件创建资源链接

Dón*_*nal 3 grails groovy

如何在不对应用程序上下文进行硬编码的情况下,从Grails应用程序中的.js文件创建指向资源(图像,.css文件等)的链接?

在.gsp文件中,我可以使用资源插件提供的r:imgr:resource标记轻松完成此操作.如果应用程序未使用此插件,则g:resource可以使用该标记.但是,这些插件都不能从.js代码中使用.

我当前的解决方案(我讨厌)是将.js代码放在.gsp文件中,然后使用前面提到的图像标签,例如

<r:script>
  var imagePath = '<r:img file="foo/bar.png"/>';
<r:script>
Run Code Online (Sandbox Code Playgroud)

更新

我的问题是如何从.js文件链接到资源,而不是从<script>GSP中的块中的某些JavaScript代码链接.在后一种情况下,我可以使用像<r:img><r:resource>或等的GSP标记<g:createLink>,但忽略.js文件中的GSP标记.

Igo*_*nov 6

您可以将当前上下文传递给JS.例如,通过在<head>(在您自己的JS之前)添加以下代码段:

<g:javascript>
    window.appContext = '${request.contextPath}';
</g:javascript>
Run Code Online (Sandbox Code Playgroud)

然后在JS的任何地方使用它:

var imagePath = appContext + '/images/foo/bar.png'
Run Code Online (Sandbox Code Playgroud)