使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
(node.js 模块) 锐利图像处理器保持源文件打开,调整大小后无法取消链接原始文件
热实现 grails 服务器端触发对话框,或如何在 AJAX 调用后突破更新区域