rails中的Controller Specific Assets

半城伤御伤魂 提交于 2019-12-06 18:55:23

默认下,pipeline就是加载一个大的application.js和application.css,这里最大的一个问题是,打开一个页面,不管要不要,都得把所有的js和css都加载,我感觉这很不妥,不说文件个头较大,还有可能出现冲突。所以我认为每个页面只要加载公共的js和css 及 这个页面所需的js和css即可,其实在guide中提到了一个方法,就是Controller Specific Assets,但是只是简单的交代了一下,该怎搞,如下:

首先,改造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了。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!