NestJS と Next.js:役割は違い、同じプロジェクトでも併用

NestJS と Next.js:バックエンドか React フレームワークか | We.Inc

NestJS は Node.js のサーバーAPIを作り、Next.js はサーバーコードも少し書ける React のWebサイトを作ります。同じエンドポイントを両方で書いた例、連携の仕方、それぞれが必要な場面を紹介します。

NestJS と Next.js はライバルではありません。NestJS はサーバーサイドの Node.js アプリケーションのためのフレームワークで、API向けにコントローラー、モジュール、依存性注入を提供します。Next.js はWebページを作るための React フレームワークで、軽いバックエンド処理には Route Handlers を使います。小さなアプリなら Next.js だけで完結でき、大きなシステムでは Next.js のフロントエンドの背後に NestJS のAPIを置くことがよくあります。

それぞれのフレームワークの用途

下は1つのエンドポイント、GET /cats で猫の一覧を返す処理を、NestJS のコントローラーと Next.js の Route Handler で書いたものです。例を切り替えると、POSTのルートや、Next.js のページから NestJS のAPIを呼び出すための設定も見られます。

よくある質問

Next.js は NestJS の代わりになりますか?

小さなアプリなら、多くの場合なります。Route Handlers は Web の Request と Response の API で GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS に対応しています。NestJS が真価を発揮するのはバックエンドが大きくなったときです。多数のモジュール、バックグラウンドジョブ、モバイルアプリなど複数のクライアントがあり、チームが構造の強制を望む場合です。

NestJS で React のページを描画できますか?

そのためには作られていません。NestJS はデータを返し、オブジェクトはデフォルトでJSONにシリアライズされます。ページには Next.js か、別のフロントエンドフレームワークを使いましょう。

NestJS には TypeScript が必要ですか?

NestJS は TypeScript で作られていて完全に対応していますが、ドキュメントによるとプレーンな JavaScript でも書けます。ほぼすべての例とガイドが TypeScript を使っているので、使うことになると考えておきましょう。

2つは1つのリポジトリに置くべきですか?

2つのアプリと共有の型パッケージを持つモノレポは、1つのチームならうまく機能します。それぞれのリリーススケジュールを持つ別々のチームには、別のリポジトリが向いています。

どちらを先に学ぶべきですか?

Webサイトを公開したいなら Next.js から始めましょう。複数のフロントエンドやサービスが依存するAPIを作るときに NestJS を学びましょう。

NestJS がバックエンドにもたらすもの

Next.js がWebサイトにもたらすもの

両者の組み合わせ方

両方のプロジェクトを作る

NestJS のAPIと Next.js のサイトの雛形を作る

Nest のコマンドラインツールをインストールしてAPIを作り、隣のフォルダーにサイトを作ります。

GET /cats

NestJS では @Controller('cats') の接頭辞と @Get() がパスを組み立て、コントローラーはモジュールに登録されます。Next.js ではフォルダーのパスがURLになり、export した関数名がメソッドになります。

POST /cats

NestJS は @Body() でJSONの本文を自動で解析し、POSTにはデフォルトでステータス 201 を返します。Next.js の Route Handler は request.json() で本文を読み、ステータスも自分で設定します。

両方を使う

NestJS をポート 3001 に移し、サイトのオリジンを許可します。Next.js のページは Server Component なので、fetch はサーバーで実行され、API_URL は公開されません。

例を選択

NestJS

NestJS版をコピー

例 {n} / {v}

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る