我有一个application.js资源和一个editor.js资源。它们都具有jquery.batchImageLoad.js库的依赖关系。两个不同导轨资产的单个JavaScript文件依赖关系
application.js可用于整个网站,但editor.js仅在某些页面上可用,但它们有时会遇到。
事情是,jquery.batchImageLoad.js库被加载两次,这不是完全合乎需要的。
是否有任何方法来防止这些冲突,除非必须改变实际的JavaScript?
我有一个application.js资源和一个editor.js资源。它们都具有jquery.batchImageLoad.js库的依赖关系。两个不同导轨资产的单个JavaScript文件依赖关系
application.js可用于整个网站,但editor.js仅在某些页面上可用,但它们有时会遇到。
事情是,jquery.batchImageLoad.js库被加载两次,这不是完全合乎需要的。
是否有任何方法来防止这些冲突,除非必须改变实际的JavaScript?
在application.js和editor.js这两个页面都有jquery.batchImageLoad.js,因为浏览器会缓存它,所以用户只下载一次就可以了。
我推荐构建你的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
但如果它运行两次?无论如何,轨道工作的方式将使其加载2次。 – 2012-05-31 16:24:38
你是什么意思的方式铁轨工程?对于一个jQuery扩展,运行两次并不理想,但可能确定,因为它会在第二次覆盖它(应该没有onload方法)。这是由你来构建你的包含文件只包含一次的方式。 – phillee 2012-05-31 22:03:34
这是一个旧帖子,我真的不记得为什么......但它肯定没有工作 – 2012-06-01 12:02:52
如果application.js中的每一页上,它已经拥有jQuery的一个DEP .batchImageLoad.js,那么为什么editor.js需要在同一个batchImage上拥有dep? – dstarh 2012-04-23 16:50:24
@dstarh在不久的将来,会有一些只有editor.js的页面。 – 2012-04-23 20:36:17