使用 bootstrap-sass 时我应该如何管理 sass 代码?

Posted

技术标签:

【中文标题】使用 bootstrap-sass 时我应该如何管理 sass 代码?【英文标题】:How should I go about managing sass code when using bootstrap-sass? 【发布时间】:2015-05-02 21:08:26 【问题描述】:

The documentation 说:

在 app/assets/stylesheets/application.scss 中导入 Bootstrap 样式:

// "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables"
@import "bootstrap-sprockets";
@import "bootstrap";

bootstrap-sprockets 必须在 bootstrap 之前导入,图标字体才能工作。

确保文件具有 .scss 扩展名(或 .sass 用于 Sass 语法)。如果您刚刚生成了一个新的 Rails 应用程序,它可能会附带一个 .css 文件。如果这个文件存在,它将被提供而不是 Sass,所以重命名它:

$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss

然后,从文件中删除所有 //= require 和 //= require_tree 语句。相反,使用 @import 来导入 Sass 文件。

不要在 Sass 中使用 //= require ,否则您的其他样式表将无法访问 Bootstrap 混合或变量。

但是如果我按照他们说的做,我的其他样式表将不会像之前那样自动包含在内。我应该在布局中明确包含每个样式表吗? AFAIU,这也将使我在生产环境中拥有单独的样式表,而不是没有bootstrap-sass 时的样式表。

【问题讨论】:

【参考方案1】:

这里有几件事。首先,默认情况下,每个样式表在开发中在单独的 http 请求中提供,在生产中在一个请求中提供(它们被预编译到一个文件中)。如果我们遵循文档,我们最终也会有一个开发请求,这将抵消仅编译已更改文件的性能优势。 If we don't,我们最终可能会在样式表中多次出现bootstrap。万一我们need some variables or mixinsin several stylesheets.

所以我建议这样:

application.sass(请注意我把require_self放在require_tree .之前):

/*
 *= require_self
 *= require_tree .
 */
// import bootstrap once
@import "bootstrap-sprockets"
@import "bootstrap"
.d1
    text-align: center

welcome.sass:

// in other files import only some particular partials
@import "bootstrap/variables"
@import "bootstrap/mixins"
.d2
    text-align: right

【讨论】:

【参考方案2】:

但是如果我按照他们说的做,我的其他样式表将不会像之前那样自动包含在内。

是的,你是对的。

1) 您不应从 application.scss 中删除您的 require 指令。他们不想使用 require 指令,因为在这种情况下,您无法在包含的文件中使用 SASS 变量和 mixins。

2) 只需将 application.css 重命名为 application.scss。他们想要它,因为在这种情况下,您将能够在 application.scss 文件中使用 @import 指令。这意味着您将能够在包含的文件中使用 SASS 变量和 mixin。

我应该在布局中明确包含每个样式表吗?

不,只需将它们留在 application.scss 中

AFAIU,这也将使我在生产环境中拥有单独的样式表,而不是像没有 bootstrap-sass 那样的样式表。

不,您将在不同的环境中使用一个 application.scss。

【讨论】:

以上是关于使用 bootstrap-sass 时我应该如何管理 sass 代码?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 bootstrap-sass 不能与 Rails 一起使用?

使用 git 时我应该从哪里获取发布文件?

当会话令牌无效时我应该使用啥状态码?

使用 bootstrap-sass gem 覆盖 Rails 中的 Bootstrap 变量

使用 SessionFactoryUtils 时我应该关闭连接吗

使用带有 bootstrap-sass gem 的 Rails 4 无法让 CSS 在 Heroku 上工作