如何在 Rails 3.1 中管理资产?

Posted

技术标签:

【中文标题】如何在 Rails 3.1 中管理资产?【英文标题】:How do I manage assets in Rails 3.1? 【发布时间】:2011-08-30 06:32:08 【问题描述】:

好的,我正在使用 Rails 3.1 开始一个新项目,而且我是 CoffeeScript 新手。

无论如何,我喜欢让资产文件代表控制器的想法,但如果我只希望 JS 在调用控制器时呈现呢?

例如,我有一个名为 Game 的控制器。在我的games.js.coffee 文件中,我在其中放置了一些代码,并且在每个页面请求时都会调用它。甚至与Games无关的页面。

Rails 3.0.7 中,我要做的是在应用程序erb 文件中放置一个yield(:js),然后在我的Games#action 视图中调用content_for(:js)。这样,只加载了该控制器所需的 js。

或者,我是不是走错了路?为每个页面请求加载和缓存 ALL js 代码以提高性能是否更好?

感谢您的任何建议。

【问题讨论】:

【参考方案1】:

为每个页面请求加载和缓存所有 js 代码以提高性能是否更好?

基本上,Rails 团队认为答案通常是“是”。大多数网站最好只使用一个(缩小的)JS 文件,这是在 Rails 3.1 中默认获得的。这样,一旦用户访问了您网站的单个页面,所有其他页面都会快速加载,因为所有 JS 都已被缓存。

如果您的网站有大量的 JS(想想 Facebook),那么我建议您构建您的网站以异步加载很少使用的 JS 代码,使用像 RequireJS 这样的库。否则,我不会费心在不同的控制器下加载不同的代码;这是为了边际收益而做的大量额外工作。

【讨论】:

【参考方案2】:

看看这个插件,我想它解决了你的问题:https://github.com/snitko/specific_assets

【讨论】:

以上是关于如何在 Rails 3.1 中管理资产?的主要内容,如果未能解决你的问题,请参考以下文章

>=Rails 3.1 如何在资产管道中包含 IE 特定的 YAML-CSS 文件

如何将dojo工具包与rails 3.1资产管道和coffeescript一起使用?

如何在 Rails 3.1 中包含供应商 js

Rails 3.1 资产管道供应商/资产文件夹组织

Rails 3.1 资产管道和缓存

如何将 jquery 插件添加到 rails 3.1