1
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?

Basic Study LogAdvent Calendar 2024

Day 15

Next.jsのプロジェクト構造 ~ Pages Router ~

Posted at

はじめに

Next.jsを触ったことがあるものの、基礎的な部分がよくわかっていないまま開発をしていたので、改めて一から勉強し直すためにまとめていこうと思いました。

今回はNext.jsのプロジェクト構造についてです。

プロジェクト構造

今回まとめているのは、Pages RouterのNext.js ver14の内容です。

Top level folder

  • public:静的なファイル(画像、フォント、スタイルシート等)を置く
  • src:プロジェクトのソースコードを整理するために任意で使用されるディレクトリ
  • pages:Pages Router用。srcの中にある場合もある

Top level file

  • next.config.js:Next.js の設定ファイル
  • package.json:プロジェクトの依存関係とスクリプト
  • instrumentation.ts:OpenTelemetry等、アプリケーションのパフォーマンスや動作を計測・監視するためのコードを記述するファイル
  • middleware.ts:ミドルウェアを設定するファイル
  • .env:環境変数
  • .env.local:ローカル環境変数
  • .env.production:本番環境変数
  • .env.development:開発環境変数
  • .eslintrc.json:ESLintの設定ファイル
  • .gitignore:git管理から外すファイルを記載するファイル
  • next-env.d.ts:Next.js の TypeScript 宣言ファイル
  • tsconfig.json:TypeScript の設定ファイル
  • jsconfig.json:JavaScript の設定ファイル

pagesディレクトリ内

ファイル

  • _app .js|.jsx|.tsx:Next.js のカスタム App コンポーネントを定義する。これによって、全てのページに共通のレイアウトや状態管理、グローバルなスタイルを適用できる
  • _document .js|.jsx|.tsx:Next.js のカスタム Document コンポーネントを定義する。これによって、サーバーサイドでレンダリングされる HTML ドキュメントの構造をカスタマイズ(<html><body> タグのカスタマイズ、メタタグの追加、カスタムフォントの読み込み等)できる
  • _error .js|.jsx|.tsx:アプリケーション内で発生するエラー(404エラーや500エラーなど)に対してカスタマイズされたエラーページを表示できる
  • 404 .js|.jsx|.tsx:404 エラーページ
  • 500 .js|.jsx|.tsx:500 エラーページ

ディレクトリ構成

Routes

パターン1
pages/
├── index.js        // ホームページ (/)
├── about.js        // ネストされたページ (/about)
└── contact.js      // ネストされたページ (/contact)

パターン2
pages/
├── index.js        // ホームページ (/)
├── about/
│   └── index.js    // ネストされたページ (/about)
└── contact/
    └── index.js    // ネストされたページ (/contact)

Dynamic Routes

パターン1
pages/
├── [user]/
│   └── index.js    // 動的ルートセグメント (/user1, /user2)
├── [...slug]/
│   └── index.js    // キャッチオールルートセグメント (/a, /a/b, /a/b/c)
└── [[...slug]]/
    └── index.js    // オプションキャッチオールルートセグメント (/, /a, /a/b, /a/b/c)

パターン2
pages/
├── post/
│   └── [id].js     // 動的ルートセグメント (/post/1, /post/2)
├── docs/
│   └── [...slug].js // キャッチオールルートセグメント (/docs/a, /docs/a/b, /docs/a/b/c)
└── docs/
    └── [[...slug]].js // オプションキャッチオールルートセグメント (/docs, /docs/a, /docs/a/b, /docs/a/b/c)

参考

1
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
1
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?