レンダリング
レンダリングは、あなたが書いたコードをユーザーインターフェイスに変換します。ReactとNext.jsを使用すると、コードの一部をサーバーまたはクライアントでレンダリングできるハイブリッドWebアプリケーションを作成できます。このセクションでは、これらのレンダリング環境、戦略、お よびランタイムの違いを理解するのに役立ちます。
基本
まず、次の3つの基本的なWebの概念を理解しておくと便利です:
- アプリケーションコードが実行される環境:サーバーとクライアント
- ユーザーがアプリケーションを訪問または操作するときに開始されるリクエスト-レスポンスのライフサイクル
- サーバーとクライアントのコードを分離するネットワーク境界
レンダリング環境
Webアプリケーションをレンダリングできる環境は、クライアントとサーバーの2つがあります。
- クライアントは、ユーザーのデバイス上のブラウザを指し、サーバーにアプリケーションコードのリクエストを送信します。その後、サーバーからのレスポンスをユーザーインターフェイスに変換します
- サーバーは、データセンター内のコンピュータを指し、アプリケ ーションコードを保存し、クライアントからのリクエストを受信し、適切なレスポンスを返します
歴史的には、開発者はサーバーとクライアント用のコードを書く際に異なる言語(例:JavaScript、PHP)とフレームワークを使用する必要がありました。Reactのおかげで、開発者は同じ言語(JavaScript)と同じフレームワーク(例:Next.jsまたはお好みのフレームワーク)を使用できます。この柔軟性は、コンテキストを切り替えることなく、両方の環境でシームレスにコードを書くことを可能にします。
しかし、各環境には独自の能力と制約があります。したがって、サーバーとクライアント用に書くコードは常に同じではありません。特定の操作(例:データの取得やユーザー状態の管理)は、ある環境により適しています。
これらの違いを理解することが、ReactとNext.jsを効果的に使用するための鍵です。詳細については、Server ComponentsおよびClient Componentsのページで取り上げますが、まずは基礎を続けていきましょう。
リクエスト-レスポンスのライフサイクル
概して、すべてのWebサイトは同じリクエスト-レスポンスのライフサイクルに従います:
- ユーザーアクション: ユーザーはWebアプリケーションと対話します。リンクをクリックする、フォームを送信する、またはURLをブラウザのアドレスバーに直接入力することがあります
- HTTPリクエスト: クライアントは、リクエストされているリソースや使用されるメソッド(例:
GET
、POST
)、必要に応じて追加のデータを含むHTTPリクエストをサーバーに送信します - サーバー: サーバーはリクエストを処理し、適切なリソースを返します。このプロセスには、ルーティングやデータの取得など、いくつかのステップが含まれる場合があります
- HTTPレスポンス: リクエストの処理が終わると、サーバーはクライアントにHTTPレスポンスを送信します。このレスポンスには、ステータスコード(リクエストが成功したかどうかをクライアントに知らせる)と、要求されたリソース(例:HTML、CSS、JavaScript、静的アセットなど)が含まれます
- クライアント: クライアントはリソースを解析してユーザーインターフェイスをレンダリングします
- ユーザーアクション: ユーザーインターフェイスがレンダリングされると、ユーザーはそれと対話でき、プロセスが再び始まります
ハイブリッドWebアプリケーションを構築する上で重要なのは、ライフサイクルでの作業をどのように分割し、ネットワーク境界をどこに置くかを決定することです。