15

次のプロジェクトでAngularJSを使用したいと思います。Pythonバックエンドとhtml5、Angularフロントエンドを備えたアプリケーション。

バックエンドでMVCフレームワークを使用する予定ですが、少し混乱しています。バックエンドとフロントエンドでルーティングを使用する必要がありますか?

私は常にバックエンドルーティングを使用していたので、フロントエンドでのルーティングは私にとって本当に新しいアイデアです。

クライアント側のルーティングは優れていますか?また、フロントエンドルーティングを使用することを選択した場合、バックエンドにルートはありませんか?すべてのリクエストは1つのURLに送信されますか?

4

2 に答える 2

21

クライアント側のルーティングを使用して、バックエンドが静的ファイルと JSON データを返すようにすることができます。Angular でのルーティングは、基本的に、サーバーからダウンロードする必要がある部分テンプレートと、それを処理するコントローラーを示します。

バックエンドルートは次のようになります

'/partials/:name' -> return corresponding partial

'/api/*' -> handlers to return json data

'/*' -> return index.html

index.html には他のビューへの参照が含まれます

...
<div ng-view></div>
...

ここで、yourapp.com/someview.html にアクセスするとします。サーバーは index.html を返し、URL が /someview であるため、Angular はサーバーに "someview" パーシャルを要求し、それに応じてページをレンダリングします。

つまり、サーバーの役割は、index.html、パーシャルを返し、REST API 要求を処理することです。クライアントは常に index.html を受け取り、url に基づいて、対応するパーシャルと JSON データを要求します。

于 2013-03-22T08:34:02.310 に答える
15

クライアント側のルーティング、サーバー側のルーティング、または両方の組み合わせのいずれかを選択できます...

クライアント側のルーティングの場合、サーバーによって提供される単一のページがあります。その後のすべてのルーティングは、クライアントによって行われます。多くのページを持つアプリケーションを使用している場合、これは最適なソリューションではない可能性があり、サーバー側のルーティングを実行することをお勧めします。

サーバー側のルーティングの場合、サーバー アプリケーションで定義されたすべてのルートに対してページを提供します。それぞれにミニangularJSアプリケーションが含まれます(さらに、これらのミニSPAのそれぞれは、それが理にかなっている場合は追加のルーティングを行うことができます)

あなたのケースに最適なものを決めるのはあなた次第です。

アップデート:

クライアント側のルーティングを計画している場合は、AngularUI プロジェクトのUI-routerを確認してください。これにより、状態ベースのビューや、Angular のネイティブ ルーティングでは不可能だったその他の機能を作成できるようになります。

于 2013-03-21T21:53:18.970 に答える