我一直在使用 Marionette 编写我的应用程序,但我对应用程序扩展失败感到有点困惑。
在 MarionetteJS 中似乎没有办法做这种事情:
var SuperApplication = Backbone.Marionette.Application.extend({
'modules': {
'foo': function (module, app) {
// module definition
},
'bar': function (module, app) {
// module definition
}
}
});
var app = new SuperApplication();
虽然我一直在开发,但偶尔创建一个新Application
实例并.module
在应用程序对象变得有用之前多次调用变得很重要。它会对创建的每个对象的测试可靠性产生负面影响Application
,因为不能保证它们具有相同的原型。
以下方法,虽然丑陋,但无法正确地将模块定义附加到Application
原型:
SecondApplication = Backbone.Marionette.Application.extend({
'foo': function () {
var args = slice(arguments);
args.unshift(this);
args.push(function (module, app) {
// module definition
});
return Backbone.Marionette.Module.create.apply(
Backbone.Marionette.Module, args);
}
});
我应该以其他方式做到这一点吗?