生成由Grails AssetPipeline

时间:2016-04-12 10:45:20

标签: grails asset-pipeline

我需要访问本地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")) }";

但它会生成无效链接:

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文件,而不是将其放在子目录下以获得更简单的解决方案。出于组织目的,我不愿意这样做。

1 个答案:

答案 0 :(得分:0)

您是否尝试过asset.assetPath(src: "/me/json/local.json")

资产插件会查找assets/的所有直接子项。您的local.json文件需要放在/project/assets/foo/中,以便当前代码将其提取。

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

  

assets文件夹中的第一个级别仅用于组织目的,可以包含任何名称的文件夹。文件类型也不需要位于任何特定文件夹中。 URL映射和相对路径计算中省略了这些文件夹。