链轮-多个入口点?

问题描述

| 链轮的官方文件明确指出:
Sprockets takes any number of source files and preprocesses them
line-by-line in order to build a `single` concatenation.
我是Rails中链轮的忠实拥护者,但这是问题所在-我的应用程序必须支持多种布局(桌面浏览器)和移动客户端(iphone,ipad,Android手机等)。 这两种布局都需要自己的HTML重置CSS规则。桌面和移动设备重置文件的并置规则会产生冲突,因为它们会覆盖低级CSS指令。 我该如何解决?     

解决方法

        通过为每个文件创建一个Sprocket文件,可以获取多个顶级CSS文件。例如,假设您希望
desktop.css
reset.css
common.css
ie.css
组成,而
mobile.css
common.css
ios.css
组成。您将拥有以下文件:
app/assets/stylesheets/desktop.css
app/assets/stylesheets/mobile.css
app/assets/stylesheets/reset.css
app/assets/stylesheets/common.css
app/assets/stylesheets/ie.css
app/assets/stylesheets/ios.css
desktop.css
中,您将具有以下内容:
/*
 *= require reset.css
 *= require common.css
 *= require ie.css
 */
mobile.css
中,您将具有以下内容:
/*
 *= require common.css
 *= require ios.css
 */
然后,在
app/views/layouts/desktop.html.erb
中,
<%= stylesheet_link_tag :desktop,:debug => Rails.env.development? %>
for20ѭ也一样。 最后,您需要在
config/environments/production.rb
中设置预编译资产列表:
config.assets.precompile = %w( desktop.css mobile.css )
    ,        我不确定链轮是否支持此功能,但我知道您是否使用Jammit宝石。您可以使用JS或css文件自己的混合物设置每个软件包。例如对于台式机有一个:workspace软件包,对于手机有一个:mobile软件包。 所有这些都在配置yaml文件中定义,它将按照您列出它们的顺序连接它们,这可以帮助正确获取插件依赖性。
javascripts:
  workspace:
    - public/javascripts/vendor/jquery.js
    - public/javascripts/lib/*.js
    - public/javascripts/views/**/*.js
    - app/views/workspace/*.jst

  mobile:
    - public/javascripts/vendor/jquery.js
    - public/javascripts/lib/mobile.js


stylesheets:
  common:
    - public/stylesheets/reset.css
    - public/stylesheets/widgets/*.css
  workspace:
    - public/stylesheets/pages/workspace.css
  mobile:
    - public/stylesheets/pages/mobile.css
Jammit可能值得一看您的需求 希望这可以帮助。     ,        我假设您已经为每个设备或设备组使用了不同的布局。如果是这样,只需在每个文件中包含一个不同的顶级CSS文件,然后在这些顶级文件中使用不同的require语句。如果您使用的是Rails 3.1,则没有必要保留包含所有css文件的内置行。