在哪里放置你不想总是要加载的JavaScript?

时间:2013-04-28 15:40:14

标签: ruby-on-rails

我正在使用RoR和jquery.ui.addresspicker.js

此jquery.ui.addresspicker.js要求在加载该库之前加载谷歌。我只需要在应用程序的几个页面上使用addresspicker。

以前需要加载的Google部分是:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

但是这会使页面加载速度变慢,所以我不想在我的所有页面上加载它。

application.js包含:

//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require jquery.blockUI
//= require select2
//= require cocoon

//= require_tree .

目前,jquery.ui.addresspicker.js文件位于app / assets / javascripts中,因此也会自动加载。

我该如何处理?我应该将addresspicker.js移出javascripts目录吗?我应该重写我的application.js吗?其他建议?

3 个答案:

答案 0 :(得分:1)

您可以替换

//= require_tree .

显示您希望在每个页面上包含的javascripts的明确列表。并在您需要的页面上加入jquery.ui.addresspicker

答案 1 :(得分:1)

我用Ian的想法来改变application.js

我创建了一个名为sitewide的新文件夹,并复制了我想在整个网站上使用的所有javascripts(所以不是addresspicker)。

我改变了这样的application.js:

//= require_tree ./sitewide

在我需要addresspicker的页面中,我使用javascript_include_tag

这样我每次想要添加js文件时都不需要更改application.js文件。

答案 2 :(得分:0)

在两个页面上使用不同的布局,或者只是从default_layout中删除jquery.ui.addresspicker.js,并将其包含在您需要的页面中

<%= include_javascripts "jquery.ui.addresspicker" %> or
javascript_include_tag "jquery.ui.addresspicker"

在您需要的页面