Nuxt.jsでページを作成・追加する方法|Nuxt.jsの基本

開発環境
Nuxt.jsについての詳しい説明や、開発環境の作り方は過去に記事にしているので、そちらをご覧ください。
ページ追加の仕組み
Nuxt.jsではVue Routerを自分で設定する必要はなく、「pages」ディレクトリの構造がそのままURLになります。
| フォルダパス | URL |
|---|---|
| pages/index.vue | ./ |
| pages/about.vue | ./about |
| pages/member/list.vue | ./member/list |
| pages/contact/index.vue | ./contact |
「index.vue」の場合はフォルダ直下のパスになります。
ファイル名がそのままURLになるので、修正するときにどのページのファイルを触ればいいかが分かりやすくなっています。
コンテンツの出し分けをしたいページの場合
例えば、お知らせ詳細ページやメンバー詳細ページなどは、固有の「news」「member」ではなく、「news/記事ごとのIDやパーマリンク」「member/メンバーごとのID」としないといけません。
その場合はファイルパスを「news/_id.vue」や「member/_id.vue」のようにすればOKです。
_以降の名前は自動的にプロパティ名と認識して、自動的にparamsへ代入してくれます。
404ページを作成したい
固定のページに遷移させる
nuxt.config.jsのrouterで下記のように存在しないパスにアクセスした場合はすべて特定のページに遷移させられます。
router: {
extendRoutes (routes, resolve) {
routes.push({
name: 'custom',
path: '*',
component: resolve(__dirname, 'pages/404.vue')
})
}
}あとは「404.vue」を作成しておけばOKです。
ただし、この方法だと「news/_id.vue」など_id部分が可変になっている場合は「_id.vue」が優先して表示されてしまいます。
エラーが発生した場合はすべて同じレイアウトで表示させる
「pages」ではなく、「layouts」フォルダに「layouts/error.vue」としてエラーレイアウトを用意しておくことで、エラーが発生した場合はそのページに遷移させられます。
実際に利用するのはこの方法の方が基本になりそうです。
この方法であれば、「news/_id.vue」など_id部分が可変になっているページでも、そのidを使ってAPIに問い合わせてエラーが返ってくると自動で「layouts/error.vue」のエラーレイアウトが表示されます。
<template>
<div class="container">
<h1>{{ error.statusCode }}</h1>
<p v-if="error.statusCode === 404">
ページが見つかりません
</p>
<p v-else>
エラーが発生しました
</p>
</div>
</template>
<script>
export default {
props: {
error: {
type: Object,
default: null
}
}
}
</script>

サイトを運営する時必ず登録しておきたいGoogle Search Console(サーチコンソール)の登録方法
WordPressのカスタムメニューでは、内部リンクに対してカスタムリンクは使わない!
Mac向けのミニマルでお洒落なデザインのGitクライアント「Gitfox」
Visual Studio Codeを使ったコード整形方法(Fomatter)
Visual Studio Codeで対応する括弧に色を付けて見やすくする環境設定
WordPressで「現在メンテナンス中のため、しばらくの間ご利用いただけません。」の状態でログインできなくなった場合の対処法
Visual Studio Codeでコメントを色分けして管理する「Better Comments」
Visual Studio Codeで開始タグを修正すると自動で閉じタグも修正してくれる拡張機能「Auto Rename Tag」
常時SSL化の設定をしたのに「保護された通信」が表示されない時はパスにHTTPが残っているのかも?
Nuxt.jsの基本と最初のセットアップ「プロジェクトの作成と起動をするまでの流れ」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法