我已经看到某些 Rails CMS(如 Radiant)具有在访问页面时实质上编译 Sass 的插件。有没有办法在常规的 Rails 应用程序中做到这一点?这样做性能好吗?基本上,我正在寻找一种方法来删除运行 Compass 来编译我的样式表的额外步骤。
4 回答
我没有专门使用罗盘,但看起来有一个生产标志,所以文件被编译 - 我无法想象他们会构建它来重新编译生产中的每个请求,Radiant 在应用程序启动时编译它的 css,如果你然后提交那些生成的 CSS 文件它不会尝试再次生成它们 AFAIK。
Sass 和 Compass 自动与 Rails 集成。如果您使用的是 Rails 3,您所要做的就是添加gem "haml"
到您的 Gemfile 中,所有.sass
文件.scss
都public/stylesheets/sass
将被编译.css
为public/stylesheets
.
按请求编译?我认为这可能会影响性能。在这种情况下,您绝对应该使用缓存策略。这样它仅在样式表不在缓存中时才编译样式表。
您可以创建一个帮助方法setup_stylesheet来负责设置 css 样式表。您在应用程序布局上调用此方法。
setup_stylesheet将检查 css 样式表是否在缓存中,如果存在则使用它。如果不是,则编译它。
另一种方法:
您可以设置一个初始化程序,在启动应用程序时调用 Compass 来编译您的 SASS 样式表。
- 这样做性能好吗?
在运行时编译时会产生巨大的性能损失。
正如 Nex3(Sass gem的作者)在另一个论坛上指出的那样,没有必要运行compass watch
。
我强烈建议将以下内容放入 production.rb:Sass::Plugin.options[:never_update] = true
- 如果您在 Heroku 上,这一点尤其重要。(您也可以在机架文件中执行此操作,您还可以在其中指定其他选项
嗯,祝你好运