【问题标题】:how best to organize assets in a rails app如何最好地在 Rails 应用程序中组织资产
【发布时间】:2015-07-16 01:51:46
【问题描述】:

随着我在我的应用程序上不断取得进展,我的样式表文件夹很快就会溢出。我已经阅读了资产管道上的 Rails 指南,并在互联网上搜索了一个有信誉的来源,但仍然无法通过“rails 方式”来保持一切整洁。

在我去尝试自己开发一个系统之前,我希望能得到你们的一些建议。

在资产组织方面是否有众所周知的“最佳实践”?如果没有,什么对你有好处?

目前我的设置是这样的:

app/assets/stylesheets >

application.css、application-RESPONSIVE.css

任何特定于正文、容器、导航栏、页脚的代码

controller.scss,控制器响应

*特定于该控制器的任何代码

lib/assets/stylesheets >

reset.css

在我使用的 application.css 中

*= require reset
*= require_tree .
*= require_self

要获得所有样式,但是 我也一直在想,如果需要,在 tree 之前设置 self 作为覆盖主要样式的方法是否更好是吗?

【问题讨论】:

  • 我个人认为应该避免在清单文件中包含除指令之外的任何内容。所以require_self 甚至都不需要。否则,清单文件只是一个很好的中心位置,您可以在其中识别与项目关联的所有资产。在包含在我的每个 PHP 脚本中之后,IMO 更好地包含...
  • 谢谢!我不知道。您是否知道我可以查看具有良好资产组织的目录示例?至于子目录,人们只是发明自己的风格,或者是他们将某些风格与另一种风格分开的惯例

标签: css ruby-on-rails ruby-on-rails-3 asset-pipeline organization


【解决方案1】:

在资产组织方面是否有众所周知的“最佳实践”?

资产组织:

在 Rails 中,管道资产可以放置在三个位置之一的应用程序中:app/assets、lib/assets 或 vendor /资产。

1) app/assets 用于应用程序拥有的资产,例如自定义图像、JavaScript 文件或样式表。

2) lib/assets 用于您自己的库的代码,这些代码并不真正适合应用程序的范围或跨应用程序共享的那些库。

3) vendor/assets 用于由外部实体拥有的资产,例如 JavaScript 插件和 CSS 框架的代码。

如果需要,最好在树之前设置 self 作为覆盖主要样式的方法吗?

application.css 就是所谓的清单文件。现在,用树切换 self 并没有什么特别的区别,但它会改变它在加载序列中的位置。考虑一下...

将资产放置在其逻辑位置后,您可以使用清单文件(通过 Sprockets gem)告诉 Rails 如何将它们组合成单个文件。这些清单文件包含指令 - 告诉 Sprockets 需要哪些文件才能构建单个 CSS 或 JavaScript 文件的指令。

其他信息:

Rails 所做的另一件事是当您在终端中运行rails generate 命令时为您生成样式表。在创建新控制器时,您会在资产中看到带有控制器名称的样式表。它看起来像 app/assets/stylesheets/newcontroller.css.scss

还有,史蒂夫·克莱恩所说的。

希望对你有所帮助。

更新:

我尝试在 github 上寻找示例,但我发现的所有应用程序都过于简单,并且没有为大量文件显示任何高级组织。

我鼓励您查看Open Source Rails 网站。我看过那里的一些项目,它们看起来足够复杂,足以让您感兴趣。特别是,看看Discourse app。 Discourse 由 Stack Overflow 的联合创始人 Jeff Atwood 共同创立。我想这不言自明;)

【讨论】:

  • 谢谢!我知道你说的关于链轮部分的一切都接受,我回家后会调查一下。您对样式表放置的逻辑位置有什么建议吗?我制作的 Rails Web 应用程序都没有这么大,我只是将所有样式表保存在 app/assets/stylesheets 文件夹中。
  • 哦,对不起,是的,这就是 Rails 的方式。
  • @thesowismine 如果您觉得有太多单独的自定义样式表使您的/app/assets/stylesheets 文件夹混乱,您可以随时将工作表组织到子文件夹中,然后使用require_directory 指令将它们包含在您的清单文件中.我强烈建议您阅读资产管道上的excellent Rails documentation
  • @stevelkein 是的,我就是这么想的,我只是想知道是否有一种通用的方法可以将这些样式分离到给定的子文件夹中。例如,所有响应式代码是否应该放在一个中,所有控制器是否应该放在另一个中?我尝试在 github 上查找示例,但我发现的所有应用程序都太简单了,并且没有为大量文件显示任何高级组织。
  • 我刚刚更新了我的帖子,提供了一个很好的 Rails 项目来源供您查看。我相信你会感兴趣的。享受吧!
猜你喜欢
  • 2011-05-19
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2012-02-04
  • 1970-01-01
相关资源
最近更新 更多