假设我想发布一个JavaScript库。但是有一个问题:此库的某些功能依赖于另一个库,该库位于永久URL中。我希望自动执行此操作,而不是期望我的用户包含依赖项。我的问题是:从简单的JavaScript加载这种依赖的最优雅/最短的方法是什么?
换句话说,我需要一个简短的跨浏览器实现" load"功能吼叫:
MyLib = (function(){
var locals = blabla;
load("http://foo.com/lib.js", function(){
// Library loaded! I can use it here.
...
});
return {...};
})();
请注意,这不能依赖于任何其他外部库(例如requirejs
),因为这种依赖性会按定义超出目的。毕竟,它只会迫使我的用户添加该依赖项!
答案 0 :(得分:2)
针对该案例使用Requirejs:
require(["http://foo.com/lib.js"], function (lib) {
});
更多信息:http://requirejs.org/docs/start.html,https://egghead.io/lessons/requirejs-introduction-to-requirejs
答案 1 :(得分:2)
像这样的东西应该做你想要的跨浏览器
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);
}