【问题标题】:Sass - can it be compiled at runtime?Sass - 可以在运行时编译吗?
【发布时间】:2011-06-06 14:05:11
【问题描述】:

我看到某些 Rails CMS(如 Radiant)具有在访问页面时实质上编译 Sass 的插件。有没有办法在常规的 Rails 应用程序中做到这一点?这样做性能好吗?基本上,我正在寻找一种方法来消除运行 Compass 以编译我的样式表的额外步骤。

【问题讨论】:

  • 我很好奇这会有什么用,肯定会增加页面请求的权重吗? (如果你有一个巨大的精灵会发生什么?) - 你可以使用带有监视功能的 Guard 或 Grunt,然后部署 css

标签: ruby-on-rails sass compass-sass


【解决方案1】:

我没有专门使用罗盘,但看起来有一个生产标志,所以文件被编译 - 我无法想象他们会构建它来重新编译生产中的每个请求,Radiant 在应用程序启动时编译它的 css,如果你然后提交那些生成的 CSS 文件,它不会尝试再次生成它们 AFAIK。

http://compass-style.org/docs/tutorials/production-css/

【讨论】:

    【解决方案2】:

    Sass 和 Compass 自动与 Rails 集成。如果您使用的是 Rails 3,您所要做的就是将 gem "haml" 添加到您的 Gemfile 中,并且 public/stylesheets/sass 中的所有 .sass.scss 文件将被编译为 public/stylesheets 中的 .css 文件。

    【讨论】:

      【解决方案3】:

      按请求编译?我认为这可能会影响性能。在这种情况下,您绝对应该使用缓存策略。这样它只有在样式表不在缓存中时才编译它。

      您可以创建一个辅助方法 setup_stylesheet 来负责设置 css 样式表。您在应用程序布局上调用此方法。

      setup_stylesheet 将检查 css 样式表是否在缓存中,如果存在则使用它。如果不是,则编译它。

      另一种方法:

      您可以设置一个初始化程序,在启动应用程序时调用 Compass 编译您的 SASS 样式表。

      【讨论】:

        【解决方案4】:
        • 这样做性能好吗?

        在运行时编译时会有大量性能损失。

        正如 Nex3(Sass gem 的作者)在 another forum 上指出的那样,没有必要运行 compass watch

        我强烈建议将以下内容放入 production.rb:Sass::Plugin.options[:never_update] = true - 如果您使用 Heroku,这一点尤其重要。 (您也可以在您的机架文件中执行此操作,您还可以在其中指定other options

        嗯,祝你好运

        【讨论】:

          猜你喜欢
          • 2018-08-15
          • 1970-01-01
          • 1970-01-01
          • 2016-05-01
          • 2012-09-06
          • 2018-11-21
          • 1970-01-01
          • 1970-01-01
          • 2018-07-08
          相关资源
          最近更新 更多