0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.jsの「Server Components」、「Client Components」の違いを整理する(その①) - 概要理解

Last updated at Posted at 2024-02-16

はじめに

Next.jsは、v12まで業務で使用経験はあるが、以降のversionは、ざっくり触っている状態で、なんとなくapp routerを使う程度の知識しか持っていない。
このなんとなくを解消するために、Server ComponentsClient Componentsに関して知識を深めていく。

尚、参考にしたサイトは以下です。

Client ComponentsServer Componentsの違い

Client Componentsとは

Webブラウザが、JavaScriptの実行、HTML、CSSの組み立てを行い、レンダリングされるコンポーネント。
このレンダリングプロセスは、クライアントサイドレンダリング(CSR)と呼ばれる。

Server Componentsとは

サーバが、JavaScriptの実行、HTML、CSSの組み立てを行い、レンダリングされるコンポーネント。
このレンダリングプロセスは、サーバーサイドレンダリング(SSR)と呼ばれる。

アプリケーションへの影響

項目 Client Server
バンドルサイズ 大きくなりがち
(圧縮されたHTML、CSS、JavaScript)
小さめ
(組み立てられたHTML)
デバイスリソース 食いがち 影響が少ない
SEO 検索エンジンがコンテンツのインデックスを効果的に作成しない可能性あり 検索エンジンが HTML コンテンツをクロールしてインデックスを作成
セキュリティ 機密情報漏洩リスク サーバで機密情報を扱うため、安全

コーディングへの影響

項目 Client Server
HTMLイベントハンドラ できる できない
React hooks 使える 使えない
React class component 使える 使えない
ブラウザAPI 使える 使えない

まとめ

Server Componentsを利用することで、アプリケーションに多くのメリットをもたらすことができる。ただし、コーディングを行う上で、いくつかできないことがある。(私自身、React hooksはガンガン使っていたので、Server Componentsでの実装が正直苦痛...)
どうしてもClient Componentsでないとだめだ!という場合を除き、Server Componentsを使う方針でコーディングしていこうと考えている。

次回以降

ざっくりと両者の違いを説明した程度のため、アプリケーションへの影響コーディングへの影響を基本として、実際に試して確認していこうと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?