基本上,想法是“sub”模块创建一个对象,该对象应该是作为“主”模块的实用程序库的一部分。但是,“sub”对象依赖来自“main”的实用程序:
// Main module
define(['sub'], function(sub) {
var utils = {
utilityMain: function () {
// ...
};
// ...
};
tools.subModule = sub;
return tools;
});
// Sub module
define(['main'], function(main) {
return new (function () {
// Singleton object using functions in main module
var somestuff = function () {
main.utilityMain();
// etc
};
})();
});
如何使用require.js实现这一点,而不会产生吞噬整个星球的黑洞?
非常感谢。
答案 0 :(得分:6)
the docs中提出了一些建议:
在使用b
方法定义模块之后,
a
可以稍后获取require()
(确保将require指定为依赖项,以便使用正确的上下文查找{{ 1}})
e.g:
a
或
您可以改为使用
// Sub module define(['require'], function(require) { return new (function () { // Singleton object using functions in main module var somestuff = function () { require('main').utilityMain(); // etc }; })(); });
为模块创建一个空对象,该模块可立即供其他模块参考
e.g:
exports
和
循环依赖很少见,通常是您可能想重新考虑设计的标志