2011-11-18 32 views
4

只是乱搞Rails 3.1,它通过控制器分隔样式表。Rails 3.1资产:每个控制器样式表的优点是什么?

我假设有这样的好处,但我努力确定它们是什么。似乎我必须在每个样式表中包含scss变量/ mixins,并且查找我想要编辑的元素需要多一点时间,并且我的样式很少适用于特定的控制器。

那么,我错过了什么?什么是“酷东西”:每个控制器样式表?

回答

2

仅仅因为它存在于脚手架中并不意味着它是有用的 - IMO最好是非常小众的,也许如果你有一些针对控制器的非常有针对性的CSS。

我认为每个控制器样式表的一般用法很少见,但我很想听听其他意见。

1

从我听到的解释,它可以更容易地组织资源

基本上都得到合并,并在年底一起加载,所以真的,它只是组织。

+1

那真可惜。我仍然必须在布局中编写这个怪异的'>>',并将css与命名空间分开。 – jibiel

0

这将取决于你正在优化。默认方法允许您对样式进行分区,并将其放入与当前作用域(控制器)匹配的文件中。这符合The Rails的做事方式。

在生产这些文件并不重要,因为它们都捆绑在一起。在过去的美好时光中,你会有多次请求,因此性能受到影响。

当您想要最大限度地利用级联,并优化整个站点的规则(如OOCSS方法)时,就会出现问题。

我更喜欢围绕一个常见的重置文件构建我的CSS,布局文件,并从那里开始工作,构建和重构。

让事情遍布在许多文件中,使得事物始终处于你的鼻子之下,并且可能(恕我直言)导致构建CSS的门槛较低。

2

我觉得这个讨论非常有趣,它让我想起了旧时代人们怀疑面向对象有什么价值。对我来说,有很多的相似之处:

在从面向对象的左侧方面,从HTML世界的权利:

  • 类 - 每个控制器CSS文件
  • 方法 - 选择例如与#id
  • 超类 - 导入到例如指南针框架文件(@import "compass/utilities/tables/scaffolding";

做Web应用程序时使用的所有文件,所有的意见,并使用不同的id S代表不同的视图来表示它们应该以不同的呈现我们的培训。通过使用每个控制器的样式表,并向资产添加选项以将右侧控制器的样式表(仅)包含在内,您可以使用具有不同规则的相同#id,因此您可以共享布局,然后以不同的方式呈现布局。

一个简单的例子可能是每个控制器样式表表示背景颜色,所以通过调用来自不同控制器的动作,背景颜色显示了你的工作环境。 (我不认为这对于用户来说是一个聪明的主意或者很好,但它在技术上是可行的。)

所以我认为这个额外的技术本身就有一个价值,但是我们必须学习什么这是好事。

0

尽管stylesheet-per-controller具有基于您正在构建的应用程序的潜在价值,但它对于每个应用程序当然都是不正确的。请记住,“所有样式表一起编译”的行为仅仅是一种默认行为 - 您可以更改主样式表清单文件以包含您想要的内容,或者有许多不同的清单在生产中拥有不同的编译文件。如果您正在寻找更多信息,请查看the Railscast on the asset pipeline

相关问题