RequireJS优化器命名空间

RequireJS optimizer namespace

本文关键字:命名空间 优化 RequireJS      更新时间:2023-09-26

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

所以,我想出了一个解决方案。请让我知道如果你认为这可以做得更聪明。我已经创建了一个插件,作为一个包装器:

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