javascript - 两个不同 Rails Assets 的单个 javascript 文件依赖性

标签 javascript ruby-on-rails ruby ruby-on-rails-3

我有一个 application.js Assets 和一个 editor.js Assets 。它们都依赖于 jquery.batchImageLoad.js 库。

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

问题是 jquery.batchImageLoad.js 库被加载了两次,这并不是我们想要的。

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

最佳答案

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

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

  • editor.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

关于javascript - 两个不同 Rails Assets 的单个 javascript 文件依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284601/

相关文章:

php - jQ Grid 编辑表单的问题不向 SQL 数据库发送请求

javascript - 将 CSS 样式的 HTML 导出为 PDF

javascript - jQuery.noty 未定义

ruby-on-rails - rails : Rendering partial in div on click

Ruby 文件 IO 定界符?

javascript - JS 中的哪种数据结构允许从定义的值中选择一个值?

ruby-on-rails - 在 Rails 上设计 RESTful 公共(public) API 的最佳实践是什么?

ruby-on-rails - Ruby on Rails Devise Oauth-facebook OmniAuth::Strategies::OAuth2::CallbackError

python - 从基于 Web 的界面运行 shell 命令的最佳方式是什么?

mysql - mysql 表中具有最大值的 activerecord ruby​​ 行