【发布时间】:2011-12-09 10:41:27
【问题描述】:
我在资产管道上苦苦挣扎。我正在从 Google CDN 加载 dojo,并将其放入我的模板中:
= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js', :'data-dojo-config' => %Q(dojoBlankHtmlUrl:'/blank.html', baseUrl: 'assets/', modulePaths: {custom: 'javascripts/modules'})
如果在本地运行或 CDN 已关闭,我只想回退到本地版本。我想过这样做:
script typeof(dojo) === "undefined" && document.write(unescape('%3Cscript src="js/libs/dojo-1.6.1.min.js"%3E%3C/script%3E'));
但我不喜欢它,因为它在资产管道之外起作用。我想在vendors/assets/javascripts/dojo 中保留道场。如何让资产管道提供后备服务。
有没有办法在资产管道中声明条件要求。我想要的是运行一些 javascript 测试,并根据结果提供一个文件。
谢谢
【问题讨论】:
-
CDN 最好的特性之一是它应该被客户端缓存,所以你不应该担心它被关闭。对于本地开发,您可以只做一个
javascript_inlcude_tag。如果该解决方案对您来说不够节省,您应该将其放入您的资产/javascript 中并与您的其他 js all 一起提供。 -
我明白了。但是,如果有一种方法可以通过资产管道处理文件而不将它们包含在模板中,那就太好了。因此,您可以生成一个可以通过 javascript 包含的 public/assets/javascripts/dojo-1.6.1.js 文件。 1.6.1 将充当指纹识别。两全其美。
-
我不认为这是一个很酷的想法,但口味不同。
标签: ruby-on-rails asset-pipeline google-cdn