1

我有一个 application.js 资产和一个 editor.js 资产。它们都具有 jquery.batchImageLoad.js 库的依赖关系。

application.js 在整个网站都可用,但 editor.js 仅在某些页面上可用,但它们有时会相遇。

问题是 jquery.batchImageLoad.js 库被加载了两次,这并不是完全可取的。

除了必须更改实际的javascript之外,有什么方法可以防止它们发生冲突?

4

1 回答 1

2

在 application.js 和 editor.js 的两个页面中都有 jquery.batchImageLoad.js 很好,因为浏览器会缓存它,所以用户只下载一次。

我建议以不重叠的方式构建您的 js 文件和包含文件。您可以通过放弃 application.js 来做到这一点,并拥有:

  • 编辑器.js
  • common.js
    • 包括 jquery.batchImageLoad.js 和其他常用库
  • Everything_else.js
    • 您之前在 application.js 中拥有的大部分内容

您可以在任何地方包含 common.js,然后根据您的需要包含 editor.js 或everything_else.js。

如果您不想重组,您可以编写一个 include_once 函数,尽管这会使您的 javascript 包含的可预测性降低

# in application_helper 
@included_javascripts = {}

def javascript_include_tag_once file
   unless @included_javascripts[file]
      javascript_include_tag file
      @included_javascripts[file] = true
   end
end
于 2012-05-31T12:47:31.953 回答