誰かが次の質問に答えてくれたら嬉しいです
- それはどのように機能しますか?
- なぜそれが必要なのですか?
- それは何を改善しますか?
クライアント側のルーティングはサーバー側のルーティングと同じですが、ブラウザで実行されます。
一般的なWebアプリケーションでは、さまざまなURLにマップされる複数のページがあり、各ページにはいくつかのロジックとテンプレートがあり、それらがレンダリングされます。
クライアント側のルーティングは、ロジックにJavaScriptを使用し、JSベースのテンプレートエンジンまたは他のそのようなアプローチを使用してページをレンダリングし、ブラウザでこのプロセスを実行するだけです。
通常、これはシングルページアプリケーションで使用され、サーバー側のコードは主に、クライアント側のコードがAjaxを介して使用するRESTfulAPIを提供するために使用されます。
シングルページアプリケーションを構築しようとしていて、クライアント側のルーティングについて知るようになりました。
クライアント側のルーティングを実装することで、次のことを実現できました。
遅いことは知っていますが、クライアント側ルーティング(CSR)がどのように機能するかについての情報があります。この回答は、クライアント側ルーティングの完全なjs実装を提供しようとするのではなく、独自の概念の実装に役立つ概念を明らかにしようとしています。ユーザーがアンカータグをクリックすると、ブラウザがサーバーにリクエストを送信するのは事実です。ただし、イベントをインターセプトして、デフォルトの動作、つまり「event.preventDefault();」を使用してサーバーにリクエストを送信することを防ぐことができます。以下は、ReactルーターのWebページからの抜粋です。
<a
href="/contact"
onClick={event => {
// stop the browser from changing the URL and requesting the new document
event.preventDefault();
// push an entry into the browser history stack and change the URL
window.history.pushState({}, undefined, "/contact");
}}
/>
また、進む/戻るボタンのクリックを聞くことも重要です。これは、によって行うことができます、
window.addEventListener("popstate", () => {
// URL changed!
});
しかし、上記の2つのスニペットを見ると、CSRを実装する方法を想像できます。それにはもっとたくさんのことがあります。そのため、React Routerのようなライブラリが存在し、angularのようなWebフレームワークがデフォルトでCSRを提供します。
詳細については、以下のリンクにアクセスしてください。reactルーターのコンセプトページが表示されます。
https://reactrouter.com/docs/en/v6/getting-started/concepts
また、トピックをさらに深く知りたい場合は、Angularルーターのコードを確認してください。2つの実装を比較すると、はるかに多くの洞察が得られます。