Next.js を使って React.js のコンポーネントを SSR(Server Side Rendering)して表示してみます。
SSR(Server Side Rendering)はサーバーサイドでHTMLを生成(Rendering)して表示する技術を言います。
Next.jsのインストール
Next.jsをインストールするにはNode.jsのnpmを使って行います。
Node.jsのインストールが完了していない方は先にインストールを行ってください。
まずNext.jsを起動するフォルダーを作成します。
mkdir next-test cd next-test
次にnpmで初期化を行います。
npm init
これで初期化したフォルダーにpackage.jsonが生成されます。
次に next 、react 、react-dom をインストールします。
npm install --save next react react-dom
それぞれのインストールされたバージョンは以下の通りです。
C:\next-js>npm info next version 10.1.3 C:\next-js>npm info react version 17.0.2 C:\next-js>npm info react-dom version 17.0.2
インストールが完了したらpackage.jsonのscriptsに以下の行を追加します。
,"dev": "next" ,"build": "next build" ,"start": "next start"
追加すると以下のようになります。
{ "name": "next-test", "version": "1.0.0", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" ,"dev": "next" ,"build": "next build" ,"start": "next start" }, "author": "", "license": "ISC", "description": "", "devDependencies": { "next": "^10.1.3", "react": "^17.0.2", "react-dom": "^17.0.2" } }
これで Next.js を起動する準備は完了です。
Reactのコンポーネントを作成する
次に実際に表示するためのReactコンポーネントを作成します。
まず、起動フォルダーに pages という名前のフォルダーを作成します。
この pages は Next.jsのルートパスになるので必ず pages という名前で作成します。
mkdir pages
作成した pages フォルダーの配下に index.js と言う名前で React コンポーネントを作成します。
import React, { useState } from 'react'; function MainPage() { return( <> <MakeTagH1 message="メッセージ表示テスト" /> <MakeTagH2 /> <MakeTagInput /> </> ) ; } function MakeTagH1( props ){ return( <> <h1>Next.js-Reactで作成したH1タグ</h1> <p>{props.message}</p> </> ) ; } function MakeTagH2( props ){ return <h2>Next.js-Reactで作成したH2タグ</h2> } function MakeTagInput( props ){ const [ text_val, setInputBox ] = useState( '' ) ; const handleInputChange = ( event ) => { const target = event.target ; setInputBox( target.value ) ; } ; return( <> <label>Next.js-Reactで作成したテキストボックス:<input value={text_val} onChange={handleInputChange} /></label> </> ) ; } export default MainPage;
これで React コンポーネントの作成も完了しました。
Next.jsを起動する
最後に Next.js を起動して React コンポーネントとして作成したプログラムを表示させます。
npm run dev
起動が成功すると
> next-test@1.0.0 dev C:\next-js > next ready - started server on 0.0.0.0:3000, url: http://localhost:3000 info - Using webpack 4. Reason: future.webpack5 option not enabled https://nextjs.org/docs/messages/webpack5 event - compiled successfully
というような表示がされます。
これでブラウザーから http://localhost:3000 と入力すると作成した React コンポーネットがレタリングされてページが表示されます。
以下が実際の表示結果です。
まとめ
Next.jsを使えばReactのコンポーネントをSSR(Server Side Rendering)で表示を簡単におこなうことができます。