基本上,这个想法是“子”模块创建一个对象,并且该对象应该是作为“主”模块的实用程序库的一部分。然而,“子”对象depends关于“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 实现这一目标,而不创建一个吞噬整个地球的黑洞?
非常感谢。
有一些建议the docs http://requirejs.org/docs/api.html#circular:
b
可以取a
稍后使用以下方法定义模块后require()
方法(请务必将 require 指定为依赖项,以便使用正确的上下文来查找a
)
e.g.:
// Sub module
define(['require'], function(require) {
return new (function () {
// Singleton object using functions in main module
var somestuff = function () {
require('main').utilityMain();
// etc
};
})();
});
or
你可以改为使用exports
为模块创建一个空对象,可供其他模块立即引用
e.g.:
// Main module
define(['sub', 'exports'], function(sub, exports) {
exports.utilityMain: function () {
// ...
};
exports.subModule = sub.sub;
});
// Sub module
define(['main', 'exports'], function(main, exports) {
exports.sub = new (function () {
// Singleton object using functions in main module
var somestuff = function () {
main.utilityMain();
// etc
};
})();
});
and
循环依赖很少见,通常表明您可能需要重新考虑设计
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)