Rails 3.1管道-排除Javascript文件

问题描述 投票:29回答:4

我想从管道中排除特定的javascript文件(modernizr),因为我希望它单独加载。

我想在开始时加载Modernizr,其余的javascript在末尾串联。

在3.1的资产管道中,有没有办法与需求相反的方法?即。排除项?

提前感谢。

亚当

ruby-on-rails ruby ruby-on-rails-3 asset-pipeline
4个回答
56
投票

我选择通过更改来保留链轮功能

//= require_tree

to

//= require_directory .

这将使链轮自动加载同一目录中的任何文件,但不会进一步加载任何文件夹中的文件。

这使我可以将Modernizr.js移至asset / javascripts / top文件夹,并使用以下命令手动将其加载到顶部:

<%= javascript_include_tag "top/modernizr" %>

并移动

<%= javascript_include_tag "application" %>

到我的application.html.erb文件的底部(在结束body标记上方)


23
投票

我意识到这是一个古老的问题,但是Google上周将我发送到了这里,所以这不是一个过时的问题。我在其他地方找到的答案是the "stub" directive for sprockets。所以像

//= require-tree .
//= stub Modernizr

这会使Modernizr.js脱离捆绑资产。它可以包含自己的标签,即原始答案。

Sprockets更新日志说“存根”是在2012年1月添加的,因此在首次回答此问题时尚不可用,但我认为这是一个不错的答案。


14
投票

通过转到config / environments / production.rb文件并添加以下行,可以轻松完成此操作

config.assets.precompile += %w( modernizr.js )

然后,当您对资产现代化器进行预编译时,将拥有它自己的单独文件,可以在脑海中使用。


2
投票

这些答案已过时。只需将active_admin.css.scssapp/assets/stylesheets移至vendor/assets/stylesheets

active_admin.js.coffee执行相同操作(从app/assets/javascripts移至vendor/assets/javascripts。]

然后将在需要时加载您的资产,并且您不必为了适应active_admin而对applications.js进行修改。

此解决方案在this issue中进行了描述。希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.