默认下,pipeline就是加载一个大的application.js和application.css,这里最大的一个问题是,打开一个页面,不管要不要,都得把所有的js和css都加载,我感觉这很不妥,不说文件个头较大,还有可能出现冲突。所以我认为每个页面只要加载公共的js和css 及 这个页面所需的js和css即可,其实在guide中提到了一个方法,就是,但是只是简单的交代了一下,该怎搞,如下:
首先,改造application.js和application.css,将require_tree去掉,只明确地加载需要的公共文件。
第二,改造layouts/application.html.erb
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %><%= javascript_include_tag params[:controller] %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %><%= stylesheet_link_tag params[:controller] %>
第三,在initializers/assets.rb中加上一段代码,让controller所对应的css和js文件能被预处理
Rails.application.config.assets.precompile += %w( users.js users.css )
只要这三步就可以了,然后放心大胆的在各controller相关的js和css中折腾,不管怎样都不会影响到其他的js和css了。