web-dev-qa-db-ja.com

「クライアント側ルーティング」または「サーバー側ルーティング」を使用する場合

私はこれについて少し混乱しており、この質問をするのは少し愚かだと感じていますが、理解したいです。

だから、Backbone、AngularまたはDurandalなど。このフレームワークにはルーティングが含まれます。

しかし、もちろん、データベースなどのためのサーバーがまだあります。これにはルーティングもあります。

私の質問は次のとおりです。

「クライアント側ルーティング」または「サーバー側ルーティング」を使用する場合

ルーティングが既にクライアント側で実行されているか、リクエストが最初にWebサーバーに送信されるかどうかは、どのように「決定」されますか?

サーバーがそのリクエストを知る前にクライアント側がルーティングを行うことができるため、これを想像するのは特に困難です。

これら2つのルーティングシステムがどのように連携するかを誰かが説明できれば、非常にありがたいです。

追伸:特定のフレームワークに関する回答を探しているのではなく、一般的なルーティングプロセスに関する回答を探しているため、コードサンプルは含めていません。

53
tomet

クライアントサイドルーティングは、実際のサイトが残されないシングルページアプリケーションで使用されると思います。

ルーティングは、クライアント側のルーティングフレームワークが反応する現在のページにアタッチすることで機能します。

index.html#/ mysubpage

サーバー側ルーティングは、ApacheのURLでサブサイトを呼び出すときにデフォルトでApacheが行うことと似ていますが、htmlファイルを最初にレンダリングする必要があるため、node.jsはルートを使用してそれを行います。

クライアントサイドルーティングフレームワークを備えたSPAがあり、Node.jsを使用している場合、サイト間の切り替えにはサーバーサイドルーティングが必要です。

3

現代のアプリケーションは、多くの場合、クライアント側とサーバー側の両方のルーティングを「混合」または「ハイブリッド」の方法で使用するため、これら2つの手法を区別するのは非常に困難です。

whenおよびhowを理解してサーバー側ルーティングとクライアントを使用する-側のルーティングでは、おそらく大規模な製造会社を管理するために使用される大規模なアプリケーションがある場合に何が起こるかを理解する必要があります(これは実際にはあまり起こりません。これは単なる有用な例です)。

これらの場合、異なるpeople(異なるroles )この複雑な環境の異なるpartsを見る人(異なるaspectsまたはdomains)。たとえば、エンジニアは多くのデジタルドキュメントを含むファイルサーバーを表示し、社員食堂で働く人々は準備するメニュー、勤務スケジュール、および店舗を表示します。これらはまったく異なるアプリケーション「ドメイン」であり、まったく異なるUIを必要とするため、各タイプのユーザーに異なるSPAを提供することは理にかなっています。

この場合、サーバー側ルーティングを使用して特定のユーザーに特定のUI(SPA)をserveする一方で、クライアント側ルーティングを使用してnavigateこのUI内(およびloadデータへ)。これらのSPAは、特定の「タスク」専用の「ダッシュボード」または「コントロールパネル」であり、特定のタイプの「プロ」によって使用されるものと考えてください。

たとえば、すべてのエンジニアに/ myapp/engineeringルートを、すべての食堂スタッフに/ myapp/canteenを作成できます。これらの各URLは特定のドメインを表し、特定のserveダッシュボードから特定のタイプのuserへ。これらのURLは管理されますserver-side

代わりに、それぞれの内部でnavigateへのルーティングclient-sideを使用しますこれらdashboard、必要に応じてデータをロードし、UIを再構成します。

もちろん、アプリにはおそらく、必要なデータを取得するためにSPAで使用されるRESTful APIもあります。 REST APIは、実際のHTMLページに関連付けられていない場合でも)ジョブを実行するためにサーバー側で管理する必要があり、「舞台裏」のSPAによってのみ呼び出されます通常、これらは/ myapp/apiのような分離された「ドメイン」に保持されます。

通常は、/ myapp/staticフォルダー(または「ドメイン」)に保持され、サーバー側(このフォルダーまたは「ドメイン」が管理できる)である静的Webページ(「連絡先」ページや「アバウト」ページなど) be-しばしば-異なるサーバーでホストされます)。

したがって、おそらくseparateアプリケーションドメインへのサーバー側ルーティングとへのクライアント側ルーティングを使用する必要があります。各ドメイン内のnavigate

1
AlexBottoni