RequireJS优化器命名空间

时间:2013-03-11 09:51:20

标签: javascript requirejs amd

我正在使用RequireJS创建一个JavaScript SDK,以便在其他人的网站上使用。我的RequireJS构建配置使用命名空间“myNamespace”,这样我的SDK就可以与自己的RequireJS版本捆绑在一起,而不会干扰其他人的网站。虽然这按预期工作,但在尝试从另一个RequireJS模块中要求我的SDK模块时遇到了问题:

myNamespace.define('public1', function (require) {
    var public2 = require('public2');

    return { x: 1, y: public2.y };
});

myNamespace.define('public2', function (require) {
    return { y: 1 };
});

define(function (require) {
    var private1 = require('private1');
    var private2 = require('private2');
    var public1 = myNamespace.require('public1'); // This doesn't work as it isn't using the provided `require` method.
});

如何“混合”两个RequireJS库?有关RequireJS命名空间的更多信息,请访问:http://requirejs.org/docs/faq-advanced.html#rename

1 个答案:

答案 0 :(得分:0)

所以,我想出了一个解决方案。如果您认为可以更聪明地完成,请告诉我。我创建了一个作为包装器的插件:

define(['https://example.com/mySDK.js'], {
    load: function (name, req, onload, config) {
        myNamespace.require([name], onload);
    }
});