在Grails Asset Pipeline中,我正在提供HTML,js,CSS和图像文件。
在HTML资源中,如果我需要为图像提供src,我应该如何编写该URL以考虑:
grails.assets.url
我可以想到以下解决方案:
始终使用资产之间的相对路径。
问题在于,如果我移动资产,那么它的所有相关链接都必须改变。
另一个可能的问题是,如果我以某种方式使Asset Pipeline将专有资产路由到我自己的静态服务器,并将第三方资产路由到公共CDN(例如,https://ajax.googleapis.com/ajax/libs用于angularjs,jquery等),然后任何静态相对URL都不起作用。
我认为我不应该直接引用Asset Pipeline清单之外的js和/或css文件,因此,除非这是错误的,那么这些文件类型不应该出现这个问题,但是,如果有一个CDN用于常见图像(存在这样的事情吗?),然后html文件中的静态相对URL在img
src
属性中不起作用。
angularjs&通过gsp设置的javascript变量
在html文件中使用angularjs来读取包含基本URL的javascript变量。在每个页面引用的gsp中设置基本URL。
问题是:
需要单独请求gsp(尽管它应该可以缓存很长时间)。是否可以在构建时将gsp编译为js文件,并将结果复制为资产,以便它可以包含在Asset Pipeline静态包中而不是从我的Grails服务器提供?
浏览器周期用于处理angularjs代码
某些第三方javascript库与angularjs不能很好地协作,因此让它们使用此设置可能很复杂
据我所知,css中的url()
调用仍然必须是相对的,因为angularjs无法影响它们。也许我可以使用其中一种css包装语言,比如更少,但是这个选项比选项1要复杂得多......
还有其他可行的选择吗?
我上面提到的任何一种选择还有其他缺点和/或陷阱吗?
我正在使用当前版本的Asset Pipeline(2.2.5)和最新版本的Grails 2.x(2.5.0)。