これには多くの解決策があることを認識していますが、コミュニティの意見はどうなのか疑問に思っていました.
私は一連のモデルとコレクションを持っています。各モデルには、詳細、編集、印刷、脇、ヘルプなどの多数のビューがあります。コレクションには、多くの場合、同じ名前のビューがあります (例: 脇、ヘルプなど)。
私が持っている要件の 1 つは、コードをモジュールで構造化する必要があるということです。モジュールがロードされていない場合、アプリケーションにはモジュールの機能の痕跡がありません。これは、たとえば、ユーザーが他のユーザーを表示、編集などする権限を持っていない場合に発生する可能性があります。したがって、「Users」モジュールはロードされません。
そう...
モデルのビュー定義を格納するのに適した場所は、モデルのコンストラクターであり、コレクションのコンストラクター内のコレクションであると考えました。例えば:
var User = (function(){ // module definition
// model definition
var Model = Backbone.Model.extend({
initialize: function() {
// ...
}
},{
Views: {
Details: Backbone.View.extend({
// ...
}),
Aside: Backbone.View.extend({
// ...
}),
Help: Backbone.View.extend({
// ...
})
}
});
// collection definition
var Collection = Backbone.Collection.extend({
model: Model,
initialize: function() {
// ...
}
},{
Views: {
Aside: Backbone.View.extend({
// ...
}),
Help: Backbone.View.extend({
// ...
})
}
});
// add more code here
return { // make model and collection public
Model: Model,
Collection: Collection
};
})(); // end module definition
自分の意見を別の場所に置くことができることはわかっていますが、このアプローチには、私が気づいていない重大な欠点がありますか? おそらくメモリリークか、あまり目立たない何かでしょうか?
ありがとうございました!