Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优雅地将在线JavaScript依赖项添加到源代码中?_Javascript_Ajax_Sockets_Http - Fatal编程技术网

如何优雅地将在线JavaScript依赖项添加到源代码中?

如何优雅地将在线JavaScript依赖项添加到源代码中?,javascript,ajax,sockets,http,Javascript,Ajax,Sockets,Http,假设我想发布一个JavaScript库。但有一个问题:这个库的某些特性依赖于另一个库,而另一个库位于永久url中。我不希望我的用户包含依赖项,而是希望将其自动化。我的问题是:从裸JavaScript加载这种依赖关系的最优雅/最短的方法是什么 换句话说,我需要一个简短的、跨浏览器的“加载”功能实现,如下所示: MyLib = (function(){ var locals = blabla; load("http://foo.com/lib.js", function(){

假设我想发布一个JavaScript库。但有一个问题:这个库的某些特性依赖于另一个库,而另一个库位于永久url中。我不希望我的用户包含依赖项,而是希望将其自动化。我的问题是:从裸JavaScript加载这种依赖关系的最优雅/最短的方法是什么

换句话说,我需要一个简短的、跨浏览器的“加载”功能实现,如下所示:

MyLib = (function(){
    var locals = blabla;
    load("http://foo.com/lib.js", function(){
         // Library loaded! I can use it here.
         ...
    });
    return {...};
})();

注意,这不能依赖于任何其他外部库(例如
requirejs
),因为这种依赖性从定义上来说会超出目的。毕竟,这只会迫使我的用户添加依赖项

在这种情况下使用Requirejs:

require(["http://foo.com/lib.js"], function (lib) {
});

更多信息:,

在这种情况下使用Requirejs:

require(["http://foo.com/lib.js"], function (lib) {
});

更多信息:,

类似的内容应该可以跨浏览器执行您想要的操作

function load(url, callback) {
    var head    = document.getElementsByTagName('head')[0];
    var script  = document.createElement('script');
    script.type = 'text/javascript';
    script.src  = url;

    script.onreadystatechange = callback;
    script.onload = callback;

    head.appendChild(script);
}

像这样的东西应该可以跨浏览器执行您想要的操作

function load(url, callback) {
    var head    = document.getElementsByTagName('head')[0];
    var script  = document.createElement('script');
    script.type = 'text/javascript';
    script.src  = url;

    script.onreadystatechange = callback;
    script.onload = callback;

    head.appendChild(script);
}

谢谢然而,这个解决方案的问题是,现在我的用户必须手动添加“requirejs”,这超出了目的。我可以在我的库中内联“requirejs”,但这会大大增加库的大小。我想要的解决方案是一个简短的、自包含的函数,用于异步加载。谢谢!然而,这个解决方案的问题是,现在我的用户必须手动添加“requirejs”,这超出了目的。我可以在我的库中内联“requirejs”,但这会大大增加库的大小。我想要的解决方案是一个简短的、自包含的函数,它可以执行异步加载。