【问题标题】:How to include javascript file only once?如何只包含一次javascript文件?
【发布时间】:2014-02-25 14:14:49
【问题描述】:

我正在使用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 时,我可以看到速度被包含 两次。 第一次在&lt;head&gt; 开头,第二次代替javascript_include_tag "application" 如何预防?

【问题讨论】:

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


    【解决方案1】:

    第一次包含 pace.js 是因为您已明确指定包含 pace.js 库的 &lt;%= javascript_include_tag "pace.min" %&gt; 语句。

    第二次是因为application.js中的以下声明

    //= require_tree .

    此语句意味着将所有js 文件包含在application.js(app/assets/javascripts) 的当前目录中,我猜您将pace.js 保留在同一目录中,这就是它再次被包含的原因.

    编辑

    如果您想从资产包中排除 pace.js 并将其明确包含在 &lt;head&gt; 中,请在 application.js 中使用 stub 指令。这样pace.js 只会被包含一次。

    //= stub pace

    【讨论】:

    • 如果我只是允许 Rails 本身包含它(通过 //=require_tree 。)那么 pace.js 将作为 JS 文件 #40 包含在内,但要正常工作,需要使用 pace.js 库包含在 部分的顶部
    【解决方案2】:

    pacejs 和 rails 也有 2 个 gems 设置

    1

    pacejs_rails gem

    2

    pace rails gem

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

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

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

    Pace 将在其他列出之前包含在内

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2011-01-26
      • 1970-01-01
      • 2020-02-09
      • 2015-09-01
      • 2010-10-31
      相关资源
      最近更新 更多