我有以下模块配置:(
Global -> Collections -> Favorites
全局需要收藏,收藏需要收藏)。
同时Favorites
还需要Global
模块(针对它的其他属性)。
示例代码:
define("global", ["collections"], function(Collections) {
console.log("Defining global");
var Global = {
env: "home",
collections: Collections
};
return Global;
});
define("collections", ["favorites"], function(Favorites) {
console.log("Defining collections");
var collections = {
likes: function() {},
favorites: Favorites
};
return collections;
});
define("favorites", ["global"], function(Global) {
console.log("Defining favorites");
var Favorites = function(name) {
console.log(Global.env)
this.name = name;
};
return Favorites;
});
require(["global"], function(Global) {
console.log("global", Global);
console.log("collections", Global.collections);
console.log("favorites", Global.collections.favorites);
var Favorites = Global.collections.favorites;
Favorites();
});
我还为这种情况创建了 jsfiddle:http: //jsfiddle.net/NBSzC/
正如你所看到的,当我们试图env
从undefined
.
在 StackOverflow 上,在同一案例中还有其他有用的票证:如何使用 RequireJS/AMD 处理循环依赖项?
使用它我可以让它“工作”,请检查以下小提琴:http: //jsfiddle.net/NBSzC/1/
这里的问题是我不得不使用
console.log(Global.Global.env)
因为原来的 Global 现在指向 export 对象,我们已经将 Global 的链接设置为 Global。
我们也可以在 Global 模块中进行以下操作,但我相信这是另一个 hack:
_.extend( exports, Global );
在相应的链接中根本没有这样的问题,不知道我做错了什么。