如何只包含一次javascript文件?

时间:2014-02-25 14:14:50

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline

我正在使用pace.js库,其文档说,我需要尽早包含他们的JS / CSS文件。 http://github.hubspot.com/pace/。我做到了,现在我的application.html.erb看起来像这样:

<head>
  <%= javascript_include_tag "pace.min" %>
  <%= stylesheet_link_tag "pace", :media => "all" %>

  <title>My site</title>
  <%= csrf_meta_tags %>
  <%= stylesheet_link_tag "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
</head>

但是当我查看生成的HTML时,我可以看到包含两次的速度。 第一次在<head>开始,第二次代替javascript_include_tag "application" 怎么预防呢?

2 个答案:

答案 0 :(得分:2)

由于您已明确指定包含pace.js库的<%= javascript_include_tag "pace.min" %>语句,因此首次包含pace.js

第二次因为application.js

中的以下陈述

//= require_tree .

此语句表示包含当前目录jsapplication.js)中的所有app/assets/javascripts个文件,我猜您已将pace.js保留在同一目录中这就是为什么它再次被包括在内。

编辑

如果要从资产包中排除stub并将其明确包含在application.js中,请在pace.js中使用<head>指令。这种方式pace.js只会被包含一次。

//= stub pace

答案 1 :(得分:1)

还有2个用于pacejs和rails的宝石设置

1

pacejs_rails gem

2

pace rails gem

或者,在您的application.js文件中,列出您需要它们的顺序

//= require pace
//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//= require_tree .

然后树将按顺序抓取其他所有内容。

Pace将被列入其他列出的

之前