Grails Asset Pipeline:静态资产中的网址

时间:2015-05-25 18:04:50

标签: angularjs grails asset-pipeline

在Grails Asset Pipeline中,我正在提供HTML,js,CSS和图像文件。

在HTML资源中,如果我需要为图像提供src,我应该如何编写该URL以考虑:

  1. 可以根据grails.assets.url
  2. 指定的其他基本网址投放资源
  3. 资产可以从Grails服务器(在开发模式下)提供,但在可能变量的应用上下文中提供
  4. 我可以想到以下解决方案:

    1. 始终使用资产之间的相对路径。

      问题在于,如果我移动资产,那么它的所有相关链接都必须改变。

      另一个可能的问题是,如果我以某种方式使Asset Pipeline将专有资产路由到我自己的静态服务器,并将第三方资产路由到公共CDN(例如,https://ajax.googleapis.com/ajax/libs用于angularjs,jquery等),然后任何静态相对URL都不起作用。

      我认为我不应该直接引用Asset Pipeline清单之外的js和/或css文件,因此,除非这是错误的,那么这些文件类型不应该出现这个问题,但是,如果有一个CDN用于常见图像(存在这样的事情吗?),然后html文件中的静态相对URL在img src属性中不起作用。

    2. angularjs&通过gsp设置的javascript变量

      在html文件中使用angularjs来读取包含基本URL的javascript变量。在每个页面引用的gsp中设置基本URL。

      问题是:

      1. 需要单独请求gsp(尽管它应该可以缓存很长时间)。是否可以在构建时将gsp编译为js文件,并将结果复制为资产,以便它可以包含在Asset Pipeline静态包中而不是从我的Grails服务器提供?

      2. 浏览器周期用于处理angularjs代码

      3. 某些第三方javascript库与angularjs不能很好地协作,因此让它们使用此设置可能很复杂

      4. 据我所知,css中的url()调用仍然必须是相对的,因为angularjs无法影响它们。也许我可以使用其中一种css包装语言,比如更少,但是这个选项比选项1要复杂得多......

    3. 还有其他可行的选择吗?

      我上面提到的任何一种选择还有其他缺点和/或陷阱吗?

      我正在使用当前版本的Asset Pipeline(2.2.5)和最新版本的Grails 2.x(2.5.0)。

0 个答案:

没有答案