所以我有一个相对简单的Rails应用程序,我想通过Bootstrap为它添加一些材料设计样式。
我已经将以下gem添加到我的Gemfile中:
gem 'bootstrap-sass'
gem 'bootstrap-material-design'现在它们都可以工作了,我的问题是为什么我必须以不同的方式将它们添加到我的应用程序中。对于vanilla Boostrap,我只是将其导入到视图特定的(我认为这是正确的术语) scss文件中,就像normal一样。
@import "bootstrap-sprockets";
@import "bootstrap";但是对于Material Design gem,我必须将其‘请求’到根application.css文件中
*= require bootstrap-material-design为什么会有这样的差异,这需要语法做些什么呢?
发布于 2015-05-12 16:24:51
包含和
方法做了非常不同的事情。
require方法执行include在大多数其他编程语言中执行的操作:运行另一个文件。它还可以跟踪您过去所需的内容,并且不需要两次使用相同的文件。要在不添加此功能的情况下运行另一个文件,可以使用load方法。
include方法从另一个模块获取所有方法,并将它们包含到当前模块中。这是一个语言级别的东西,而不是像require那样的文件级别的东西。include方法是使用其他模块“扩展”类的主要方法(通常称为混合模块)。例如,如果你的类定义了方法"each",你可以包含混合模块Enumerable,并且它可以作为一个集合。这可能会让人感到困惑,因为include动词在其他语言中的用法非常不同。
因此,如果您只想使用一个模块,而不是扩展它或进行混合,那么您将希望使用require。
奇怪的是,Ruby的require类似于C的include,而Ruby的include几乎与C的include完全不同。
More info
发布于 2015-05-12 16:25:49
我猜你了解CSS/SASS @import option的用途。require是sprockets directive。链轮在编译会话期间处理指令-所需文件的简单连接。唯一的区别是它们如何处理(共享)上下文。简而言之,使用always @import to be safe safe。
请在这里查看详细说明:https://github.com/rails/sass-rails#important-note
发布于 2016-10-05 22:41:07
当我改变我的CSS时,我遇到了一个非常慢的重新编译的问题。根据this article的说法,链轮require和Sass @import之间的差异是显著的,至少在性能方面是这样:
资产管道处理Sass @imports的方式与处理链轮的方式不同。在导入的情况下,每次保存都将遍历并编译所有导入,无论您保存的是哪个部分。在样式表中处理链轮的方式是,只有保存的部分会重新编译,然后在刷新时被注入到本地页面上。链轮是将多个零件加载到单个文件中以进行生产的默认方式。
通过对我的第三方供应商依赖项使用require,CSS重新编译现在需要1.5秒,而不是25秒。
https://stackoverflow.com/questions/30185222
复制相似问题