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

时间:2014-11-16 00:57:22

标签: javascript ajax sockets http

假设我想发布一个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),因为这种依赖性会按定义超出目的。毕竟,它只会迫使我的用户添加该依赖项!

2 个答案:

答案 0 :(得分:2)

针对该案例使用Requirejs:

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

更多信息:http://requirejs.org/docs/start.htmlhttps://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);
}