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>

JavaScriptで日付をコピーして計算すると、コピー元の日付も変わってしまう場合の対処法
WordPressのカスタム投稿タイプを追加後、ページは存在しているはずなのに404になる場合の解決方法
SourceTreeでマージ時に「fatal: You have not concluded your merge (MERGE_HEAD exists).」と表示される場合の対処法
効率的なマークアップが出来るようになるEmmetでCSSを書く時の基本
WordPressで既に公開済みの記事の更新を、指定した日付に反映する方法「PublishPress Revisions」
Nuxt.jsの「layouts」を使用してレイアウトの共通化を行う方法|Nuxt.jsの基本
様々な作業を自動化するgulpの基礎と導入方法
Facebookでシェアした記事の画像反映ができていない時の修正方法
Nuxt.jsでVuexストア連携を行う方法|Nuxt.jsの基本
「epel-release」インストール後にyum installで「Cannot retrieve metalink for repository」と表示される場合の対処法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
ターミナルのカスタマイズによく使われる「Nerd Fonts」
動画の圧縮をFinder右クリックメニューの「選択したビデオファイルをエンコード」から行う
Vue.jsを使う人が最低限導入しておきたいVisual Studio Codeの拡張機能
CSS Nite in Kobe, vol.40「クライアントとのより良い関係性を築くためのコミュニケーション手法」に参加してきました
Illustratorのサンプルテキストの割り付けを少しだけ便利にする
Figmaでモックアップをすばやく作成する「Mockuuups Studio」
Figmaのコメント機能を利用してデザイン上のやり取りを円滑にする
Drive File Streamで接続しているGoogle Drive内の検索をするAlfred Workflowの作成方法
Karabiner-Elementsでデザインツール(Photoshop・Sketch・Figma)のショートカットキーを設定する
SNSやウェブサービスを並べて、見やすく管理できるアプリ「Stack」