【问题标题】:Why does Rails include all view-specific assets in every view? [duplicate]为什么 Rails 在每个视图中都包含所有视图特定的资产? [复制]
【发布时间】:2012-11-06 11:33:50
【问题描述】:

可能重复:
Rails 3.1 asset pipeline: how to load controller-specific scripts?

在创建新控制器和关联视图后,Rails 会生成一些特定于视图的空资源。执行以下命令:

rails generate controller home index

这将生成home.css.scsshome.js.coffee。作为 Rails 的新手,我最初的想法是这些将被自动配置为仅在各自的视图中呈现。事实证明,情况并非如此。相反,默认情况是 all 脚本在 all 视图中呈现。这是预期的吗?使这些资产特定于视图的最佳方法是什么?

【问题讨论】:

标签: ruby-on-rails model-view-controller asset-pipeline


【解决方案1】:

基本设置是(在生产中)提供单个 js 文件(和单个 CSS 文件)。从缓存的角度来看,这通常更有效,但可能会导致首页加载速度稍慢。

当这太多时,您可以创建额外的清单文件(application.js 是默认文件)并单独加载它们。例如,我工作的一个应用程序有一个单独的 admin.js/css,因为它与面向消费者的部分几乎没有重叠。理论上,您可以将每个 js/CSS 文件视为清单文件,尽管您需要在每个页面上调用 javascript_include_tag。

如果您提出问题的根本原因是您的行为只想附加在某些页面上,那么要么使您的选择器/js 足够具体,以便它们可以容忍在所有页面上加载,或者(我通常这样做)添加身体上的控制器或动作特定类并使用它。

【讨论】:

  • 啊,这很有道理。我将在身体上使用课程。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-10-01
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多