0

ルートオブジェクトの中にルートが多すぎる場合、たとえば100の場合、ルートオブジェクトをどのように整理しますか。単一のファイルまたはオブジェクトに入れるだけですか?

ありがとう。

4

2 に答える 2

2

ここには正しい答えも間違った答えもないと思います。確かに正しいのは、50以上のルートを含む単一のルーターを使用することはできないということです...これは保守性の悪夢です。

代わりに、アプリケーションをサブアプリケーションまたはモジュールに分割することを好みます(必要に応じてそれらを呼び出します)。それぞれに明確な目的と責任があります。そのため、架空の注文管理システムでは、

  • 管理アプリを注文する
    • 人アプリ
      • router.js
      • app.js
      • ..。
    • 注文アプリ
      • router.js
      • app.js
      • ..。
    • ..。
    • globalrouter.js
    • globalapp.js

ここで重要なのは、巨大なアプリ/モノリスを作成しないことです。代わりに、一緒に構成してアプリケーション全体を形成できる(各アプリ間のイベントと通信する)多数の小さなアプリを作成することです。とは言うものの、上記の例では、「person」アプリと「order」アプリには、関連するルートを保持する独自のルーターがあります。「グローバル」アプリは接着剤を形成し、アプリメニューや、特定のモジュール/サブアプリに厳密ではないいくつかの一般的なルートを使用するなど、すべての単一アプリをまとめます。

たぶん、バックボーンオーラは始めるのに良いポイントです。

于 2013-02-07T12:52:40.863 に答える
1

ルーターを複数のファイルに分割できます。どのように分類するかはユースケースによって異なります。私のアプリケーションでは、モジュールごとに分類します。

モジュールの定義方法はアプリケーションによって異なりますが、一般的な経験則では、機能を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();
});

これにより、コードをさまざまなモジュールに分割して、ビュー、テンプレート、モデルをモジュールごとに分離することもできます。

于 2013-02-07T13:01:14.720 に答える