如何在 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 文件