addRouteMiddleware
addRouteMiddleware() は、アプリケーションに動的にミドルウェアを追加するためのヘルパー関数です。
ルートミドルウェアは、Nuxtアプリケーションの
middleware/
ディレクトリ(特に設定されていない場合)に保存されているナビゲーションガードです。型
addRouteMiddleware (name: string | RouteMiddleware, middleware?: RouteMiddleware, options: AddRouteMiddlewareOptions = {})
パラメータ
name
- 型:
string
|RouteMiddleware
文字列またはRouteMiddleware
型の関数を指定できます。関数は、次のルートto
を最初の引数として、現在のルートfrom
を2番目の引数として受け取ります。どちらもVueルートオブジェクトです。
ルートオブジェクトで利用可能なプロパティの詳細はこちらをご覧ください。
middleware
- 型:
RouteMiddleware
2番目の引数は、RouteMiddleware
型の関数です。上記と同様に、to
およびfrom
ルートオブジェクトを提供します。addRouteMiddleware()
の最初の引数がすでに関数として渡されている場合、これはオプションになります。
options
- 型:
AddRouteMiddlewareOptions
オプションのoptions
引数を使用すると、ルーターミドルウェアがグローバルかどうかを示すために、global
の値をtrue
に設定できます(デフォルトではfalse
に設定されています)。
例
匿名ルートミドルウェア
匿名ルートミドルウェアには名前がありません。最初の引数として関数を受け取るため、2番目のmiddleware
引数は冗長になります。
plugins/my-plugin.ts
export default defineNuxtPlugin(() => {
addRouteMiddleware((to, from) => {
if (to.path === '/forbidden') {
return false
}
})
})
名前付きルートミドルウェア
名前付きルートミドルウェアは、最初の引数として文字列、2番目の引数として関数を受け取ります。
プラグインで定義されている場合、middleware/
ディレクトリにある同じ名前の既存のミドルウェアをオーバーライドします。
plugins/my-plugin.ts
export default defineNuxtPlugin(() => {
addRouteMiddleware('named-middleware', () => {
console.log('named middleware added in Nuxt plugin')
})
})
グローバルルートミドルウェア
オプションの3番目の引数として{ global: true }
を設定すると、ルートミドルウェアがグローバルかどうかを示すことができます。
plugins/my-plugin.ts
export default defineNuxtPlugin(() => {
addRouteMiddleware('global-middleware', (to, from) => {
console.log('global middleware that runs on every route change')
},
{ global: true }
)
})