使用 Grails Assets 管道插件,我试图找出在页面上包含 Assets (javascript) 的最佳方法,而不是将它们编译到 application.js 文件中。目前,这就是我正在做的事情......
在我的布局文件的底部:
<g:set var="workflow" value="${pageProperty(name: 'meta.workflow')}"/>
<asset:javascript src="application.js"/>
<g:if test="${workflow == 'storeAdmin'}">
<asset:javascript src="store/script.js"/>
</g:if>
在views/store/index.gsp header 中:
<meta name="workflow" content="storeAdmin" />
虽然这有效,但感觉就像是黑客攻击。我必须这样做的原因是,如果我只是尝试将 Assets 包含在 View 本身中,而不是布局中,它总是在 application.js 之前渲染,这意味着该脚本中依赖于全局代码的任何内容将失败;例如需要 jQuery 的代码。
最佳答案
我通常使用一种约定来命名页面特定的 javascript 资源,以反射(reflect) Controller 和操作的名称。使用这些和 <asset:assetPathExists>
标签我可以将以下内容添加到我的布局中:
<asset:assetPathExists src="${params?.controller ?: 'home'}_${params?.action ?: 'index'}.js">
<asset:javascript src="${params?.controller ?: 'home'}_${params?.action ?: 'index'}.js" />
</asset:assetPathExists>
关于javascript - 包括页面特定 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502669/