使用 grails 后处理 *.js 文件

Posted

技术标签:

【中文标题】使用 grails 后处理 *.js 文件【英文标题】:Postprocess *.js files with grails 【发布时间】:2012-08-05 15:02:17 【问题描述】:

我想知道是否有可能对 *.js 文件进行后处理,以便可以评估每个 gsp 表达式。

例如我可以直接在gsp页面中编写如下代码:

<script type="text/javascript">
$.post("$createLink(controller:'mycontroller',action:'myaction') " , "id":id,function());
</script>

表达式 $createLink 由 grails 求值。

但我还想在 grails 未处理的 *.js 文件中使用 $createLink()。 也许可以使用资源插件对每个 *.js 文件进行后处理并评估 gsp 表达式?

当然,我可以将我所有的 js 代码包装在一个单独的 gsp 页面中,但这似乎不是一个优雅的解决方案。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

这两种方法都适合你

http://grails.org/plugin/gsp-arse(独立) http://grails.org/plugin/gsp-resources(与资源插件一起使用)

【讨论】:

谢谢。 GSP 资源插件正是我想要的。【参考方案2】:

另一种选择是执行类似的操作,将 url 存储在变量中

<script type="text/javascript">
  var url = "$createLink(controller:'mycontroller',action:'myaction')";
</script>

然后你可以使用所有你想要的 ajax 调用并且仍然只设置一次 url。

【讨论】:

【参考方案3】:

在您的 GSP 文件中使用 JS 哈希来保存重要的内容

<r:script>
 var linkobject=
   mylink:'$createLink(controller:"mycontroller",action:"myaction")',
     linkA : '$params.id',
    linkB: '$g.createLink(action: "getThreats")',
    linkC: '$g.createLink(action: "addThreat")',
    linkD: '$g.resource(dir: 'images/icons', file: 'folder.png')'
 


</r:script>

然后,在你的 JavaScript 文件中使用 JS 哈希来获得你需要的东西:

$.post(linkobject.mylink , "id":linkobject.linkA,function());

【讨论】:

以上是关于使用 grails 后处理 *.js 文件的主要内容,如果未能解决你的问题,请参考以下文章

插件安装后 Grails Apache 中断?

(node.js 模块) 锐利图像处理器保持源文件打开,调整大小后无法取消链接原始文件

form表单上传文件使用multipart请求处理

热实现 grails 服务器端触发对话框,或如何在 AJAX 调用后突破更新区域

JS atob btoa方法处理base64数据后转Blob类型实现文字转语音.mp3文件

JS atob btoa方法处理base64数据后转Blob类型实现文字转语音.mp3文件