我正在使用这条线:
= javascript_include_tag :all, :recursive => true, :cache => true
在 Rails 应用程序的页脚中执行以下操作:
- 递归加载public/javascripts下的所有脚本
- 在生产中,将它们全部集中到一个文件中(
:cache
part)
但是,我想在头部加载这些脚本之一,因为一些内联 JS 依赖于它。
有没有一个选项javascript_include_tag
排除已经加载的文件?
我知道默认情况下它不会执行此操作,因为现在我看到源 HTML 中引用了两次脚本。
javascript_include_tag
是一个简单的 html 帮助器,不会跟踪天气或页面上是否已包含某些内容,所以不,没有选项,很糟糕。
相反,您可以通过以下几种方式解决您的问题:
使用类似的东西Jammit http://documentcloud.github.com/jammit/,我现在正在使用它,这绝对是一种乐趣。它将生产中的所有 javascript 打包到一个文件中,允许您压缩其中的垃圾,并且对 CSS 执行相同的操作。您可以使用配置目录中的 .yml 文件对其进行配置,使其可移植并且易于递归地包含目录中的脚本,同时仍然控制它们包含在页面上或附加到包中的顺序。 Jammit 的替代方案(恕我直言,不太好)是资产打包器 http://synthesis.sbecker.net/pages/asset_packager.
Use javascript_include_tag
在头脑中。并不是真正的世界末日。稍后优化。
并不是真正特定于 Rails,但使用head.js http://headjs.com/. head.js
是相当新的,但允许您快速并行加载许多脚本,同时保留执行顺序,并在脚本加载后但在 dom 准备好之前触发回调。它包括许多其他优点,例如旧版浏览器中的 HTML5 友好性。这个选项很有趣,因为您可以将脚本分开,或者至少放在不同的包中,以获得最大的并行下载速度。我不确定天气或没有在串行下载一个巨大的压缩包<head>
甚至在页脚处,或者使用 head.js 并行加载内容会更快,但它确实使管理这些内容变得更容易。
我都用过head.js
最近还有 Jammit,我必须说,对于重型 Javascript 应用程序,它们使事情变得非常简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)