ルートオブジェクトの中にルートが多すぎる場合、たとえば100の場合、ルートオブジェクトをどのように整理しますか。単一のファイルまたはオブジェクトに入れるだけですか?
ありがとう。
ルートオブジェクトの中にルートが多すぎる場合、たとえば100の場合、ルートオブジェクトをどのように整理しますか。単一のファイルまたはオブジェクトに入れるだけですか?
ありがとう。
ここには正しい答えも間違った答えもないと思います。確かに正しいのは、50以上のルートを含む単一のルーターを使用することはできないということです...これは保守性の悪夢です。
代わりに、アプリケーションをサブアプリケーションまたはモジュールに分割することを好みます(必要に応じてそれらを呼び出します)。それぞれに明確な目的と責任があります。そのため、架空の注文管理システムでは、
ここで重要なのは、巨大なアプリ/モノリスを作成しないことです。代わりに、一緒に構成してアプリケーション全体を形成できる(各アプリ間のイベントと通信する)多数の小さなアプリを作成することです。とは言うものの、上記の例では、「person」アプリと「order」アプリには、関連するルートを保持する独自のルーターがあります。「グローバル」アプリは接着剤を形成し、アプリメニューや、特定のモジュール/サブアプリに厳密ではないいくつかの一般的なルートを使用するなど、すべての単一アプリをまとめます。
たぶん、バックボーンオーラは始めるのに良いポイントです。
ルーターを複数のファイルに分割できます。どのように分類するかはユースケースによって異なります。私のアプリケーションでは、モジュールごとに分類します。
モジュールの定義方法はアプリケーションによって異なりますが、一般的な経験則では、機能を1つの「機能」またはトピックにグループ化します。
たとえば、アプリケーションが基本的な「会社」アプリであるとします(Backbone.jsを使用するのは悪い例ですが、シンプルにしましょう)。このサイトには、「About Us」、「Product」、「Client」、「サポート」、「ブログ」、「キャリア」。各セクション内には、2つのレベルの子ページがあります(同様に、製品では、製品のリストを作成できます。各製品内では、ドリルダウンして、製品、製品の購入方法、などなど)
各セクションの例では、それらをモジュールと見なすことができます。そして、これに基づいて、すべてのルートを含む単一のルーターを異なるルーターに分割できます。(もちろん、それらは異なるファイルにある可能性があります!)
var MainRouter = Backbone.Router.extend({
routes: {
'/': 'home'
},
home: function() {
// Display home view
}
});
var ProductRouter = Backbone.Router.extend({
routes: {
'/product': 'listProducts',
'/product/:id/buy': 'buyProduct',
'/product/:id': 'viewProduct',
'/product/compare/:id1/:id2': 'compareProduct'
},
listProducts: function() { ... },
buyProduct: function(id) { ... }
viewProduct: function(id) { ... }
compareProduct: function(id1, id2) { ... }
});
アプリを起動するときは、すべてを起動する必要があります。
$(function() {
new MainRouter();
new ProductRouter();
});
これにより、コードをさまざまなモジュールに分割して、ビュー、テンプレート、モデルをモジュールごとに分離することもできます。