2016-08-13 8 views
0

角度jのWebアプリケーションを開発する場合、開発者が費やす時間の一部はルーティングを実装する時間です。ui-routerを使用した角度jsアプリケーションのルーティング

アプリケーションのUI-ルータを使用する場合は、ルーティングに関して考慮すべき二つの「相が」あります

  1. ユーザーがアプリケーション内をナビゲート:クリックがいくつかのボタンの上に作られたとき、ユーザーがに転送されます$ state.go( "somestate")を使用して別の状態。パラメータはsendなどとすることができ、それに応じてurlも変更されます。

  2. ユーザーはurl経由で直接ナビゲートします。

アプリケーションがこのような経路を有していると言うことができます: /mythings/{thingid}/mysubthings/{mysubthingid}

ユーザがブラウザウィンドウに貼り付けることにより、直接そのURLにナビゲートした場合、アプリケーションがそれを処理する必要があります。私の質問はそれを行うベストプラクティスですか?

私は何をしているのですか?ユーザがブラウザでそのURLを入力したときに何をする必要があるかを上記のURLの例で見ると、 URL {$ stateParams}から{{{{{}} $ stateParams(おそらく、状態を定義するときにresolve(ui-router機能)を使用して)、次に解決されたものをコントローラに注入し、apiにクエリを行い、そのデータでui内の "subthing"と現在のビューに関するデータを取得します。つまり、ユーザーがクリックして状態に移ったとき、またはユーザーがブラウザにURLを直接入力するときの両方の「ナビゲーションの種類」で動作するはずです。これは正しい道ですか?

そして、アプリケーションで何かをクリックしたときに行くURLがあれば、そのURLをブラウザに貼り付けるだけで、他の場所にリダイレクトされずに同じ結果が表示されるはずです。このようにアプリケーションがすべてのURLを処理できない場合は、アプリケーションのアーキテクチャを再検討する必要がありますか?

ありがとうございました

答えて

1

UI-Routerでは、ルーティングの主なコンポーネントは状態です。 URLは、本質的に、アプリケーションの特定の状態を指すアドレスです。私は、別々のものとしてナビゲートする2つの方法を考えるのは必ずしも生産的ではないと思います。彼らは同じコインのちょうど2つの側面です。状態によって処理されないURLはありません。状態と一致しないURLは、$stateProviderotherwise定義によってキャッチされ、おそらくホームページまたは404ページにリダイレクトされます。

例では、thing/:thingId/subthing/:subthingIdのURLは、他の状態と同じように定義済みの状態にマップする必要があります。状態がmain.subthingであるとします。 $state.go('main.subthing', {thing: 123, subthing: 456})またはui-sref='main.subthing({thing: 123, subthing: 456})'を呼び出すか、myapp.com/thing/123/subthing/456をブラウザに貼り付けることで、データをロードし、コントローラを起動し、UIをレンダリングするプロセスはまったく同じでなければなりません。彼らはまったく同じ場所に正確に同じデータを持っていて、まったく同じロジックを呼び出すことになります(解決の際に123とサブディッシュ456が読み込まれ、コントローラに注入される可能性が高いです)。

アプリケーションがURLを処理できない場合は、何か問題があるという兆候です。私が言ったように、状態を設定するときには、otherwiseを定義することによって悪いURLを処理する必要があります。しかし、あなたの状態が正しく定義されていれば、ブラウザにURLを貼り付ける必要はありません。 URLの処理はデフォルトでUI-Routerに焼き付けられます。

0

私は部分的にあなたに同意します。私が同意しない点は、URLにアクセスする予定のないユーザーがURLを取得したときです。非常に頻繁にいくつかのウェブサイトは、ページに現在アクセスしているユーザが許可されているかどうかを確認するための認証コードを実装しています。

また、私はルートが少し異なると思う。ような何か:

{thingid}/{} mysubthingid

これは、私はクリーンURLで、パラメータはあなたの例では1と同じように扱うことができると思います。

許可されていないユーザーには少し難しいものにするために、これをお勧めします。

とにかく、実装しているアプリケーションの種類によって異なります。ブラウザのURLを貼り付けることでページにアクセスできるようにする必要がある場合は、あなたのアプローチがはるかに優れていると思います。

関連する問題