如果您在Rails应用程序中使用HAML和SASS,那么您在public / stylesheet / *。sass中定义的任何模板都将被编译为* .css样式表。从代码中,您可以使用stylesheet_link_tag按名称提取资产,而不必担心扩展名。
许多人不喜欢将生成的代码或已编译的代码存储在版本控制中,这也足以说明public /目录不应包含您不发送给浏览器的元素。
在Rails项目中布置SASS资源时应遵循的最佳模式是什么?
如果您在Rails应用程序中使用HAML和SASS,那么您在public / stylesheet / *。sass中定义的任何模板都将被编译为* .css样式表。从代码中,您可以使用stylesheet_link_tag按名称提取资产,而不必担心扩展名。
许多人不喜欢将生成的代码或已编译的代码存储在版本控制中,这也足以说明public /目录不应包含您不发送给浏览器的元素。
在Rails项目中布置SASS资源时应遵循的最佳模式是什么?
如果可以管理它,那么当我为项目选择HAML / SASS时,我希望将所有样式存储在SASS模板中,然后删除application.css和scaffold.css。然后我将SASS放在public / stylesheets / sass中,并将/public/stylesheets/*.css添加到.gitignore中。
如果我必须结合使用SASS和基于CSS的资产,则要复杂一些。解决此问题的最简单方法是在样式表目录中包含生成的CSS的输出子目录,然后在.gitignore中排除该子目录。然后,由于必须选择public / stylesheets / foo样式表或public / stylesheets / sass-out / foo样式表,因此在您的视图中必须知道使用的样式类型(SASS或CSS)。
如果您必须走第二条路线,请构建一个帮助程序来抽象掉sass-out子目录。
我总是在“ public / stylesheets / sass / *。sass”中对所有样式表进行版本控制,并为已编译的样式表设置排除过滤器:
/public/stylesheets/*.css
该指南针框架建议把你的青菜样式表在公众下的应用程序/样式表和编译的CSS /样式表/编译。
您可以通过将以下代码添加到environment.rb中来进行配置:
Sass::Plugin.options[:template_location] = {
"#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}
如果使用罗盘框架,则在安装时会为您设置此配置。
老实说,我喜欢在版本控制中使用已编译的SASS样式表。它们很小,只有在您的.sass文件更改时才会更改,并且将它们与应用程序的其余部分一起部署意味着SASS编译器永远不需要在生产环境中启动。
另一个优点(尽管很小)是,如果您不使用页面缓存,则Rails进程不需要对
public_html
目录具有写权限。因此,利用服务器进行恶意攻击的途径少了。