代码之家  ›  专栏  ›  技术社区  ›  Chloe

如何排除a。在应用程序中加载css文件。轨道中的SCS?

  •  2
  • Chloe  · 技术社区  · 7 年前

    yootheme.css 仅用于索引页,并将其从其他地方的标题中排除?我有

    application.haml
    / UIkit CSS
    -# %link{:rel => "stylesheet", :href => "https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-beta.30/css/uikit.min.css"}/
    %link{:rel => "stylesheet", :crossorigin => "anonymous", :href => "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css", :integrity => "sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ"}/
    = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' 
    
    application.scss
     *= require_tree .
     *= require_self
    

    app/assets/stylesheets/yootheme.css

    index.haml
    =stylesheet_link_tag 'yootheme.css', media: :all
    
    3 回复  |  直到 5 年前
        1
  •  3
  •   Sebastián Palma    7 年前

    您可以使用 sprockets#stub

    *= stub yootheme.css
    

    然后要手动合并它,您必须将文件添加到 assets.rb ,重新启动服务器,然后使用 stylesheet_link_tag 帮手:

    # config/initializers/assets.rb
    # Rails.application.config.assets.precompile += %w( yootheme.css )
    
    # view
    = stylesheet_link_tag 'yootheme.css', media: :all
    
        2
  •  3
  •   max Mike Williams    5 年前

    在SASS/SCSS中不使用require_树

    称为require、require\u树和require\u self。 它们非常原始,不能很好地处理Sass文件。相反,请使用Sass的本机 @sass rails定制以与之集成的导入指令 https://github.com/rails/sass-rails

    如果您没有使用任何Sass特性,例如变量、函数、混合等,您可以很好地使用 require_tree . 但一旦你这样做了,你就会意识到它们在任何文件中都不可用,除了在它们声明的文件中。这是因为在链轮将文件连接在一起之前,每个文件都在SASS编译器中运行。

    @import 'foo' 以及手动声明哪些文件以及它们应该添加到编译的样式表中的顺序。

    默认的资产管道设置是一个很好的尝试,让懒惰的程序员不要把所有东西都塞进一个css/js文件中,同时仍将其编译为单个优化文件。这真的需要 require_tree .

    我通常关闭资产生成器:

    # config/application.rb
    module MyApp
      class Application < Rails::Application
        config.generators do |g|
          g.assets false
          # or
          g.stylesheets false
        end
      end
    end
    

    app/assets 进入模块。任何不是我的代码都会进入 /vendor .

    glob imports 从库文件夹导入sass混合和变量-但不能/不应替换 需要_树 .

    使用单独的布局意味着您必须复制整个文件才能更改一两行。

    相反,您可以使用 content_for 要在布局中生成动态块,请执行以下操作:

    # application.html.haml:
    !!!
    %html
      %head
        %title My Rails app
        - content_for :assets
          = stylesheet_link_tag "application"
          = javascript_include_tag "application"
        = csrf_meta_tag
    
      %body
        = yield
    

    然后在 index 我们可以添加到 head

    - content_for :assets
      = stylesheet_link_tag "some_other_file"
    

    这将在下面添加样式表链接 = javascript_include_tag "application" as content\u for将提供的块连接到已捕获的内容。使用 flush: true

    - content_for :assets, flush: true
      = stylesheet_link_tag "some_other_file"
    
        3
  •  0
  •   krishnar    7 年前

    像这样的

    指数haml(布局) ..

    - if action_name=="index"
       /* include both application.css and yootheme.css for index*/
       = stylesheet_link_tag 'application', 'yootheme.css', media: :all
    - else
       /* include only application.css*/
       =stylesheet_link_tag 'application, media: :all