加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-4 – Rails:使用Sass的@import而不是* = require

发布时间:2020-12-17 03:24:12 所属栏目:百科 来源:网络整理
导读:我决定使用Sass的@import而不是Sprocket的* = require. 我在application.scss中有这个: @import 'normalize';@import 'font-awesome';@import 'variables'; 这在blog.scss中: @import 'application'; 这样我就可以为不同的控制器设置单独的样式表(使我的代
我决定使用Sass的@import而不是Sprocket的* = require.

我在application.scss中有这个:

@import 'normalize';
@import 'font-awesome';
@import 'variables';

这在blog.scss中:

@import 'application';

这样我就可以为不同的控制器设置单独的样式表(使我的代码更有条理).

为了使这个工作,我还将stylesheet_link_tag params [:controller]添加到我的布局,然后将Rails.application.config.assets.precompile =%w(blog.css)行添加到我的/config/initializers/assets.rb文件中重启服务器.

这种方法有什么缺点吗? turbolinks会变慢吗?

解决方法

如果你有多个Sass文件,Rails Asset Pipeline指南实际上建议使用Sass的@import而不是Sprockets * = require.

以下是Rails Asset Pipeline指南的引用:

“如果你想使用多个Sass文件,你通常应该使用Sass @import规则而不是这些Sprockets指令.当使用Sprockets指令时,Sass文件存在于它们自己的范围内,使变量或mixin仅在它们被定义的文档中可用in.(http://guides.rubyonrails.org/asset_pipeline.html)“

这也推荐在sass-rails gem Github页面(https://github.com/rails/sass-rails)上.这是该页面的引用:

“Sprockets提供了一些放在注释中的指令,名为require,require_tree和require_self.不要在你的SASS / SCSS文件中使用它们.它们非常原始,不适用于Sass文件.而是使用Sass的原生@import sass-rails已经定制的指令,可以与Rails项目的约定集成.“

这种方法没有任何明显的缺点,实际上有很多好处(包括但不一定限于):

>主要优点来自SASS @import创建全局命名空间,而Sprockets指令不创建.
>编译将在开发中加速一点,因为每次每个partial @ import都不需要重新编译所有供应商mixin.
>使用@import全局命名空间会创建一个Whorfian效果,团队中的开发人员倾向于定义和重用他们应该的变量(在变量文件中),而不是更具体的文件.例如,如果未在全局变量文件(http://pivotallabs.com/structure-your-sass-files-with-import/)中定义,z索引可能会成为一场噩梦.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读