- どのページにも適用される外観を構成するパーツ(header, footer, sidebarなど)、を配置することでpagesに反映することができる
- 設定無しで自動的に読み込ませるためには
layouts/default.vue
とする
- 読み込ませたくない場合は
definePageMeta({ layout: false })
とする
<template>
<div>
<slot /> // pages配下のファイルを表示する
</div>
</template>
<script setup>
definePageMeta({ layout: 'foo' })
</script>
app.vue がある場合は NuxtLayout を追加
<template>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</template>
- サーバーで1回、クライアントではページ遷移のたびに読み込まれる(認証やページ制御に用いられる)
- middleware/auth.global.tsのように.globalの接尾辞を付けておくと、ルートの変更時に自動的に実行される
- リダイレクトする場合やパスを指定する場合 : navigateTo() を使用
- 遷移しない場合 : abortNavigation()を使用
### defineNuxtRouteMiddleware()
export default defineNuxtRouteMiddleware((to, from) => {
console.log('middleware')
})
名前付きルートミドルウェアをページファイルで読み込む方法
<script setup>
definePageMeta({
middleware: ["auth"]
// または middleware: 'auth'
})
</script>
nuxt.comfig.js
export default {
router: {
middleware: 'routerOption'
},
}
- ライブラリやパッケージの利用に使用する
- ファイルを自動的に読み込み、Vueアプリケーションの作成時にロードする
- サーバーサイドでのみロードとする場合はファイル名に .serverを追加
- クライアントサイドのみロードとする場合はファイル名に .clientを追加
export default defineNuxtPlugin(nuxtApp => {
// nuxtApp で何かする
})
NuxtApp インスタンスにヘルパーを提供したい場合 : プラグインからヘルパーをprovideキーで返す
plugins/
export default defineNuxtPlugin(() => {
return {
provide: {
hello: (msg: string) => `Hello ${msg}!`
}
}
})
他のファイルから呼び出す場合
<template>
<div>
{{ $hello('world') }}
</div>
</template>
<script setup lang="ts">
// または、こちらを使用
const { $hello } = useNuxtApp()
</script>
- APIリクエストやバックエンドとの通信を管理するために使用する
- 例 : apiService.ts, apiServiceResponse.ts
interface : オブジェクトの型(構造)を定義できる
Userという名前で型注釈ができる
interface User {
id: number;
name: string;
email: string;
}
const user: User = {
id: 1,
name: 'Alice',
email: '[email protected]',
};
type : オブジェクトとクラスの型以外も定義できる
type Color = "白" | "黒" | "赤" | "緑";
let color: Color = "白";
color = "青"; //Type '"青"' is not assignable to type 'Color'.
- 汎用的なヘルパー関数や便利なユーティリティ関数を配置するための場所
- 自動的にインポートされる
例 : 時間定義、ステータスコード定義、