我正在尝试决定在开始一个新的Rails 3.1项目时是否应该包含Compass 。我以前没用过指南针。
Rails 3.1 现在直接支持 SCSS。Rails 3.1 资产管道(通过 sprockets)现在可以自动编译样式表。而且我可以直接使用 CSS 框架的 SCSS 版本,例如 Blueprint。
将 Compass 与 Rails 3.1 结合使用将获得什么好处?
我正在尝试决定在开始一个新的Rails 3.1项目时是否应该包含Compass 。我以前没用过指南针。
Rails 3.1 现在直接支持 SCSS。Rails 3.1 资产管道(通过 sprockets)现在可以自动编译样式表。而且我可以直接使用 CSS 框架的 SCSS 版本,例如 Blueprint。
将 Compass 与 Rails 3.1 结合使用将获得什么好处?
Compass 提供了许多优秀的 mixin、一个非常强大的 sprite 生成器,以及与 Blueprint 的紧密集成,这意味着您不必在col
整个 HTML 中使用非语义类。
如果你不使用 mixins,使用 Compass 并没有太大的好处,但是如果你不使用它们,使用 SCSS 也没有太多好处(嵌套和变量很好,但是 mixins 有助于保持浏览器的特定性在单个位置实现属性)。
然而,我发现蓝图比它的价值更麻烦。我仍然会使用 Compass 作为 mixins,但是现在 Rails 3.1 和 Compass 之间的兼容性很糟糕(你必须跳过一些障碍,你仍然会牺牲一些功能)。
在一些相关的注释中,Rails 3.1 编译资产的方式相当“破碎”。它没有考虑社区在过去一两年中是如何使用 Sass 的——将变量、mixin 和页面部分都分开,以便按顺序包含在主文件中。Sprockets 加载和编译 Sass 的“自动”方式将文件彼此分离,因此即使您application.css
在 .
Bourbon(由 Thoughtbot 提供)是与 rails 3.1 完美集成的指南针的轻量级替代品。
它具有您使用指南针获得的主要 css3 混合(背景图像、框阴影、边框半径、渐变......)。它还具有帮助设置按钮样式、“网格化”您的布局和更多好东西。
您可能会错过 compass 的一些强大功能,但可以通过 sass 的强大功能轻松克服:只需复制/创建您自己的 mixin!
升级我的 Rails 应用程序时,Compass 经常让我头疼。我很欣赏波旁威士忌的简单性(尽管它也可能让你头疼……早上:-))
Compass 是一个与设计无关的框架——例如,您不必担心用户拥有哪些浏览器。
例如 Compass 具有附加组件,例如 CSS3 跨浏览器功能: http ://compass-style.org/reference/compass/css3/ 这样您就可以在 .scss 文件中指定与浏览器无关的内容
边注:
Rails 3.1 处理 .scss 文件的方式是一次一个 - 例如,如果您在一个文件中定义变量,它们不会被转移到其他 .scss 文件中。恕我直言,这并不是真正的最佳解决方案。
html5boilerplate compass 插件也可以节省大量时间,因此出于这些原因,我会使用compass