作者:鱼儿7秒的记忆_710 | 来源:互联网 | 2023-05-29 11:29
我决定使用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是慢?
1> Andrew Hendr..:
如果你有多个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索引可能会成为一场噩梦.
我在开发过程中经历了非常慢的加载时间,当我只使用@imports时,特别是如果使用bootstrap-sass和一些选择指南针组件.我仍然在尝试研究这个问题,但是我很高兴等待10秒钟在开发中加载页面.