Ruby on rails 4 Rails:使用Sass的缺点&x27;s@import而不是*=require
我决定使用Sass的Ruby on rails 4 Rails:使用Sass的缺点&x27;s@import而不是*=require,ruby-on-rails-4,import,sass,turbolinks,Ruby On Rails 4,Import,Sass,Turbolinks,我决定使用Sass的@import而不是Sprocket的*=require 我在应用程序中有这个。scss: @import 'normalize'; @import 'font-awesome'; @import 'variables'; @import 'application'; 这在blog.scss中是: @import 'normalize'; @import 'font-awesome'; @import 'variables'; @import 'application'
@import
而不是Sprocket的*=require
我在应用程序中有这个。scss:
@import 'normalize';
@import 'font-awesome';
@import 'variables';
@import 'application';
这在blog.scss中是:
@import 'normalize';
@import 'font-awesome';
@import 'variables';
@import 'application';
这样,我就为单独的控制器提供了单独的样式表(使我的代码更有条理)
为了实现这一点,我还将stylesheet\u link\u tag params[:controller]
添加到我的布局中,然后将Rails.application.config.assets.precompile+=%w(blog.css)
行添加到我的/config/initializers/assets.rb文件中,并重新启动服务器
这种方法有什么缺点吗?TurboLink会更慢吗?如果您有多个Sass文件,Rails资产管道指南实际上建议使用Sass的@import而不是Sprockets*=require 以下是《Rails资产管道指南》中的一段引用: 如果要使用多个Sass文件,通常应使用Sass@import规则,而不是这些链轮指令。使用链轮指令时,Sass文件存在于它们自己的范围内,使变量或混合仅在定义它们的文档中可用。() 在sass-rails-gem-Github页面()上也建议这样做。下面是该页的一段引语: “链轮提供了一些指令,这些指令放在名为require、require_树和require_self的注释中。不要在SASS/SCSS文件中使用它们。它们非常原始,不能很好地处理Sass文件。相反,请使用Sass的原生@import指令,该指令是Sass rails定制的,用于与rails项目的约定集成。” 这种方法没有任何明显的缺点,实际上有很多好处(包括但不限于):
资产管道对待Sass@imports的方式与对待链轮的方式不同。在导入的情况下,每次保存都会执行并编译所有导入,无论您保存了哪个部分。样式表中处理链轮的方式是,只有您保存的部分会重新编译,然后注入到刷新时本地翻页。这使得链轮的平均速度比导入快得多,尽管使用@import确实有一些好处,如本线程其他部分所列。有关此主题的详细信息,请访问treehouse:
如果您想知道使用多个导入是否会创建多个HTTP请求,从而产生开销,以下是sass网站对此的看法: Sass构建在当前CSS@import的基础上,但不需要HTTP请求,Sass将获取您要导入的文件,并将其与您要导入的文件组合,以便您可以向web浏览器提供单个CSS文件
在开发过程中,我只使用@imports,特别是使用引导sass和几个ChoiceCompass组件时,我经历了非常缓慢的加载时间。我仍在尝试研究这个问题,但我不愿意等待10秒在dev中加载页面。@LessQuesar:您看到的是编译和执行所有导入的文件不管它们是否已更改。链轮没有此挫折。链轮仅重新编译更改的文件,请查看下面列出的树屋文章!