0

我正在使用 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

4

1 回答 1

0

所以,我想出了一个解决办法。如果您认为这可以做得更聪明,请告诉我。我创建了一个用作包装器的插件:

define(['https://example.com/mySDK.js'], {
    load: function (name, req, onload, config) {
        myNamespace.require([name], onload);
    }
});
于 2013-03-11T20:20:37.697 回答