生成 URL 的资源,由 Grails AssetPipeline 处理

Generate URL of resources that are handled by Grails AssetPipeline

我需要访问本地 JSON 文件。由于 Grails 2.4 默认实现了 AssetPipeline 插件,我将本地 JSON 文件保存在:

/grails-app/assets/javascript/vendor/me/json/local.json

现在我需要为这个 JSON 文件生成一个 URL,用作我的 JavaScript 的 $.getJSON() 的函数参数。我试过使用:

var URL.local = ""${ raw(asset.assetPath(src: "local.json")) }";

但它生成无效的 link:

console.log(URL.local);
// prints      /project/assets/local.json
// instead of  /project/assets/vendor/me/json/local.json

我也遇到了相同的场景,图像由 AssetPipeline1.9.9 处理——应该动态插入到页面上。如何生成指向此资源的 URL?我知道,我总是可以为 URL 提供静态字符串,但似乎会有更合适的解决方案。

编辑

我被问到是否可以将本地 JSON 文件直接移动到 assets/javascript 根目录下,而不是将其放在子目录下,以获得更简单的解决方案。出于组织目的,我不想这样做。

你试过了吗asset.assetPath(src: "/me/json/local.json")

资产插件查看 assets/ 的所有直接子项。您的 local.json 文件需要放在 /project/assets/foo/ 中,您当前的代码才能获取它。

查看包含示例的相关文档here

The first level deep within the assets folder is simply used for organization purposes and can contain folders of any name you wish. File types also don't need to be in any specific folder. These folders are omitted from the URL mappings and relative path calculations.