管理大量的javascript / css(RAILS 3)

时间:2011-03-16 18:34:51

标签: ruby ruby-on-rails-3

你可以告诉我有大量的样式表/ javascripts(其中一个样式表是动态的,不能缓存到all.css中)

显然我在某些情况下只需要一些样式表,但这对于缓存到一个样式表来说并不是好兆头。最好的方法是什么? (例如,我不需要报表样式表或高级图表,除非我在需要高价图表的特定报表上)

  <%= stylesheet_link_tag ['autocomplete.css', 'datepicker.css', 'web.css', 'common.css', 'home.css', 'course.css', 'admin.css'], :cache => true %>
  <%= stylesheet_link_tag [@current_client.name.downcase + '/' + @current_client.name.downcase + '.css'], :cache => false %>
  <%= javascript_include_tag ['jquery.js', 'class.js', 'jquery.extensions.js','nested_form.js','jquery.tablednd.js','jquery.autocomplete.js', 'date.js', 'datepicker.js', 'rails.js', 'common.js', 'navigation.js', 'patient_autocomplete.js', 'courses/course_request.js', 'course_steps/sort_course_steps.js', 'course_steps/next_step.js', 'enrollments/complete_course.js', 'flowplayer/flowplayer.js', 'flowplayer/playlist.js', 'course_steps/video.js', 'course_steps/presentation.js', 'highcharts.js', 'reports/course_assignment.js', 'reports/courses_allocated.js', 'reports/pie_chart.js'], :cache => true %>

1 个答案:

答案 0 :(得分:1)

将所有页面共有的内容打包成一个样式表&amp;带有Jammit或其他连接文件的Javascript,并将其放在主布局中;然后在布局中添加一些产量(如下所示)。然后在相关视图中使用content_for块(或帮助程序)添加您需要的内容。

# app/views/application.html.erb
<%= javascript_include_tag 'all_compacted.js' %>
<%= yield :extra_js %>
<%= stylesheet_link_tag 'all_compacted.css' %>
<%= yield :extra_css %>

# random view that needs something not in all_compacted.js
<%= content_for :extra_js do %>
  <%= javascript_include_tag 'highcharts.js' %>
<% end %>

还有Javascript_auto_include插件,它会根据控制器/操作自动加载JS文件,但这可能更适合在每个页面上有大量自定义javascript的情况(情况我< / em>非常熟悉)。

也可能需要查看head.js,以便对javascripts进行非阻塞加载。