あなたの質問に答えるために、3つすべてに答える私のアドバイスは次のとおりです。
モジュールはできるだけ小さくする必要があるため、ビューごとに新しいモジュールを作成し、モジュール用に 1 つ、シリアライゼーション ロジック用に 1 つ作成します。次に、外部コードがモデル、ビュー、またはシリアル化を処理する必要がないように、これらすべてを結び付ける 1 つのモジュールを作成します。
これが私の最初の刺し傷です。
// components/populationVisualization/Model.js
define(function (require, exports, module) {
return Backbone.Model.extend({ /* ... */});
});
// components/populationVisualization/views/Timeslider.js
define(function (require, exports, module) {
return Backbone.View.extend({ /* ... */});
});
// components/populationVisualization/views/Legend.js
define(function (require, exports, module) {
return Backbone.View.extend({ /* ... */});
});
// components/populationVisualization/serializer.js
define(function (require, exports, module) {
exports.setupSerialization = function (model) {
// ...
};
});
// components/populationVisualization.js
define(function (require, exports, module) {
var Model = require("./populationVisualization/Model");
var TimesliderView = require("./populationVisualization/views/Timeslider");
var LegendView = require("./populationVisualization/views/Legend");
var serializer = require("./populationVisualization/serializer");
exports.createAndRender = function (modelParams, $el) {
var model = new Model(modelParams);
serializer.setupSerialization(model);
var timesliderView = new TimesliderView({ model: model });
var legendView = new LegendView({ model: model });
$el.append(timesliderView.el);
$el.append(legendView.el);
};
});
アプリの他の場所では、適切なパラメーターを使用してrequire("components/populationVisualization")
そのモジュールのcreateAndRender
メソッドを呼び出すだけです。