如何只添加一次JavaScript库?

时间:2014-10-08 22:42:50

标签: javascript

我们这里有一个奇怪的框架。我们有不同的函数尝试添加依赖库。

我的问题是,有没有办法只添加一次库?

例如,如果已经加载了jQuery,是否有一种通用方法可以再次加载jQuery?

可能基于URL吗?

我正在寻找类似于require_once在PHP中实现的结果。

3 个答案:

答案 0 :(得分:1)

您可以使用RequireJS甚至HeadJS

在这里,他们向您解释如何使用RequireJS来避免冲突:http://requirejs.org/docs/jquery.html#noconflictmap

答案 1 :(得分:0)

好吧,您可以使用客户端库来执行此操作,例如RequireJS,或者您可以实现服务器端解决方案。我不太了解php,但是想法是让客户端资源管理器对象存在于沙盒范围内(每个客户端http请求一个)。该对象将实现诸如loadResource之类的方法,这将确保资源仅被加载一次。

答案 2 :(得分:0)

没有'通用'方式只加载一次javascript库。当加载javascript时,它会被执行并直接注入到全局域中,并且没有“通用”跟踪可以跟踪它。远程javascript的责任在于确保自身不能多次加载。 然而,有一些巧妙的技巧可以在这里完成。不使用脚本标记直接加载javascript,而是使用init()函数“注入”依赖项,并且您有机会验证脚本是否已加载。例如,如果您使用jQuery,请执行以下操作:

var jsCache = {};
function init() {
    if (jsCache[myJavascript]) {
        return;
    }
    $.getScript("my_javascript.js").done( function() {
        jsCache[myJavascript] = true;
    }
}
init();

不完美,但应该达到目的。如果可能,请使用requiejs(http://requirejs.org/docs/whyamd.html),但是,您必须将脚本模块化为AMD模块。