如何优雅地将在线JavaScript依赖项添加到源代码中?
假设我想发布一个JavaScript库。但有一个问题:这个库的某些特性依赖于另一个库,而另一个库位于永久url中。我不希望我的用户包含依赖项,而是希望将其自动化。我的问题是:从裸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(){
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”,但这会大大增加库的大小。我想要的解决方案是一个简短的、自包含的函数,它可以执行异步加载。