![見出し画像](https://assets.st-note.com/production/uploads/images/134866898/rectangle_large_type_2_1a34f7c01b87483f61efcf3e243ff3cf.png?width=1200)
【Next.js】Reactサーバーコンポーネントのメリットを実際に確認してみました
サーバーコンポーネントのメリットを実際に確認
Next.js AppフォルダでデフォルトになっているReactサーバーコンポーネント。
その特徴として、「セキュリティ性が高い」や「パフォーマンスに優れる」といたるところで書かれていますが、言葉の説明だけではよくわからないので、本記事では実際に確認をしてみましょう。
クライアントコンポーネントよりも「パフォーマンスに優れる」という点を見ていきます。
4メガバイト、減りました
まずNext.jsをインストールしましょう。
npx create-next-app text
表示される各質問に、Appルーター以外はすべて「No」で答えます。
インストール完了後にVS Codeで開いたら、下記パッケージをインストールしてください。
コードのハイライトに使うパッケージはサイズの大きいものが多いので、例として「highlight.js」を使います。
npm install highlight.js
「/app/page.js」を開き、読み込みます。
// app/page.js
import hljs from "highlight.js"; // 追加
import Image from "next/image";
import styles from "./page.module.css";
export default function Home() {
return (
...
Next.jsを「npm run dev」で起動して、ブラウザを開きましょう。
そして開発者ツールから「Network」タブを選択してください。
![](https://assets.st-note.com/img/1711192911445-ObzeE2l9Iw.jpg?width=1200)
画面をリロードし、このページで読み込んでいるリソースのサイズを確認しましょう。
これは「Network」タブの一番下に表示されており、ここでは「7.7MB」となっています。
![](https://assets.st-note.com/img/1711192924761-ToR8JYDHrJ.jpg?width=1200)
次は「/app/page.js」に、下記コードを加えてください。
// app/page.js
"use client" // 追加
import hljs from "highlight.js"
import Image from "next/image";
import styles from "./page.module.css";
export default function Home() {
return (
...
これによってこのコンポーネントは、デフォルトのサーバーコンポーネントからクライアントコンポーネントになりました。
保存したらブラウザに戻り、「Network」タブを開いたままリロードしてください。
下部のリソースサイズを確認しましょう。
![](https://assets.st-note.com/img/1711192941054-bl6bxlzc3L.jpg?width=1200)
今度は「12.3MB」と4MB以上重くなっています。
サーバーコンポーネントではパッケージをサーバー側ですべて処理するのに対し、クライアンコンポーネントではブラウザ側で処理するためです。
これでサーバーコンポーネントの「JavaScriptバンドルサイズの削減」というメリットを実際に確認できました。
Next.jsについてもっとくわしく知りたい方は、下記教本を参考にしてください。
最新のNext.js Appルータを使ってフルスタックアプリを開発します。
この記事の著者については下記リンクをチェック
◆ Amazon著者ページ:https://www.amazon.co.jp/stores/author/B099Z51QF2
公式サイト:https://monotein.com
Twitter:https://twitter.com/monotein_
◆ React、Next.js、TypeScriptなどのお役立ち情報や実践的コンテンツを、ビギナー向けにかみ砕いて無料配信中。メルマガ登録はこちらから → https://monotein.com/register-newsletter