ngRoute は、クライアント側の基本的なルーティング機能を提供する Angular チームによって構築されたモジュールです。このモジュールは、ルーティングのためのかなり強力な基盤を提供し、このブログ投稿で例示されているように、しっかりしたルーティング機能を提供するために非常に簡単に構築することができます(Ward Bell と著者である Ben Nadel の間のコメント トレイルを必ず読んでください - 彼らはAngular のプロのカップル)
ui-router は、URL 中心のルートからアプリケーションの「状態」に焦点を移します。これは、URL に反映される場合とされない場合があります。
ui-router によって追加される主な機能は、ネストされた状態と名前付きビューです。
ネストされた状態を使用すると、アプリケーションのさまざまな部分のコントローラー ロジックを分離できます。これの非常に単純な例は、上部にプライマリ ナビゲーション、左側にセカンダリ ナビゲーション リスト、右側にコンテンツがあるアプリです。ネストされた状態がない場合、通常、単一のコントローラーが、コンテンツだけでなく、セカンダリ ナビゲーションの表示ロジックも処理する必要があります。ネストされたルーティングを使用すると、これらの問題を分離できます。
名前付きビューは、ui-router のもう 1 つの追加機能です。ngRoute では、ページに ngView ディレクティブを 1 つだけ持つことができますが、ui-router の名前付きビューでは複数の ui-view ディレクティブを指定でき、各状態は名前ビューのテンプレートとコントローラーに影響を与えることができます。これの非常に単純な例は、アプリのメイン コンテンツをプライマリ ビューにし、別の UI ビューとなるフッター バーも用意することです。このシナリオでは、フッターのコントローラーは状態/ルートの変更をリッスンする必要がなくなります。
ngRoute と ui-router の良い比較は、このポッドキャストエピソードで見つけることができます。
物事をさらに混乱させるために、Angular チームが Angular のバージョン 1.5 および 2.0 用にリリースする予定の新しい「公式」ルーティング モジュールに注目してください。これは ngRoute モジュールを置き換えます。新しい Router モジュールの現在のドキュメントは次のとおり です。実装がまだ確定していないため、この投稿の時点ではかなりまばらです。このモジュールが実際にいつリリースされるかについては、こちらをご覧ください。