我正在使用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
答案 0 :(得分:0)
所以,我想出了一个解决方案。如果您认为可以更聪明地完成,请告诉我。我创建了一个作为包装器的插件:
define(['https://example.com/mySDK.js'], {
load: function (name, req, onload, config) {
myNamespace.require([name], onload);
}
});