我有一个名为 的 Backbone 应用程序模块app.js
,它看起来像这样:
// module: app
define([
'Marionette',
'collections/links'
], function (Marionette, Links) {
var app = Marionette.Application()
app.addInitializer(function () {
new Links()
})
return app
})
该app
模块创建一个实例Marionette.Application
并添加适当的初始化程序。其中之一是创建我的Links
集合的一个实例。
但是,我collections/links
的模块依赖app
于其观察者系统的模块。
// module: collections/links
define([
'app',
'Backbone'
], function (app, Backbone) {
var Links = Backbone.Collection.Extend({
initialize: function () {
// Outputs undefined
console.log(app)
// This then wouldn't work because app hasn't been initialised:
// app.on('someEvent', function () {})
}
})
return Links
})
由于该模块被列为 的依赖项app
,并且app
是该模块的依赖项,因此我发现自己具有递归依赖项。最后,RequireJS 似乎在加载collections/links
之前初始化了模块。app
如何使用 AMD 设计我的应用程序,以便app
可以使用我的collections/links
模块并且collections/links
可以使用我的app
模块?