PJ作成
コマンドを打てば対話的にPJの設定が可能となる
npx create-next-app@latest
ディレクトリ構成
ディレクトリ名 | 説明 |
---|---|
src | アプリケーションのソースフォルダ(オプションで使用しない場合はapp) |
public | 静的アセット |
node_modules | ライブラリ群 |
ファイル
ファイル名 | 説明 |
---|---|
next-config-js | Next.js の設定ファイル |
package.json | プロジェクトの依存関係およびスクリプト |
.eslintrc.json | ESLint の設定ファイル |
.next-env.d.ts | Next.js の TypeScript 定義ファイル |
tsconfig.json | TypeScript 用の設定ファイル |
ルーディング
src/appのディレクトリ構成がそのままURLとなる
例:
/my-next-app
|-- /app
|-- /about
|-- page.tsx
|-- /blog
|-- /[slug]
|-- page.tsx
|-- /contact
|-- page.tsx
|-- /page.tsx
• /app: ルートディレクトリ。ここに配置されたファイルがページルートとして使用される。
• /about/page.tsx: /aboutに対応するページ。
• /blog/[slug]/page.tsx: 動的ルーティングで、ブログの各記事に対応するページ。
• /contact/page.tsx: /contactに対応するページ。
• /page.tsx: ルートURL(/)に対応するホームページ。
[]や()でディレクトリ名を囲うことで特殊な動きができる
動的ルート
- ディレクトリ名を[]で囲うと動的ルーディングが使用できる。任意パラメータをURLから取得可能となる
/app
|-- /products
|-- /[id]
|-- page.tsx
/products/123 にアクセスすると、[id] の値が 123 になる
複数キャッチオールルート
- URLの残りの部分を配列で取得
/app
|-- /docs
|-- /[...slug]
|-- page.tsx
/docs/guide/introduction にアクセスすると、[...slug] の値が ['guide', 'introduction'] になる。
オプショナルキャッチオールルート
- URLパラメータが存在しない場合に使用する
/app
|-- /blog
|-- /[[...slug]]
|-- page.tsx
/blog にアクセスすると、[[...slug]] の値が [] になるが、 /blog/post/first-post にアクセスすると、[[...slug]] の値が ['post', 'first-post'] になる
グループ化
ディレクトリ名を()で囲うとページをグループ化できる。URL構造としては()のついた部分は無視される。
- グループ内の共通レイアウトや複数のページやコンポーネントをグループにして、コード整理する場合に使用できる
/app
|-- /(dashboard)
|-- /settings
|-- page.tsx
|-- /analytics
|-- page.tsx
|-- /about
|-- page.tsx
settings と /analytics はグループ化されているが、URLに/dashboardは含まれない。/aboutは(dashbord)の外側のため、グループには含まれない。
プライベート化(除外)
ディレクトリ名の前に_をつけることで、ディレクトリ内の全ての子ディレクトリをルーディングから除外できる