addRouteMiddleware
addRouteMiddleware() 是一個輔助函式,用於在您的應用程式中動態新增中介軟體。
路由中介軟體是儲存在您的 Nuxt 應用程式的
middleware/
目錄中的導航守衛(除非另行設定)。類型
addRouteMiddleware (name: string | RouteMiddleware, middleware?: RouteMiddleware, options: AddRouteMiddlewareOptions = {})
參數
name
- 類型:
string
|RouteMiddleware
可以是字串或 RouteMiddleware
類型的函式。函式接受下一個路由 to
作為第一個參數,以及當前路由 from
作為第二個參數,它們都是 Vue 路由物件。
了解更多關於路由物件的可用屬性。
middleware
- 類型:
RouteMiddleware
第二個參數是 RouteMiddleware
類型的函式。與上述相同,它提供 to
和 from
路由物件。如果 addRouteMiddleware()
的第一個參數已經以函式形式傳遞,則它變為可選。
options
- 類型:
AddRouteMiddlewareOptions
一個可選的 options
參數讓您可以將 global
的值設定為 true
,以表示路由中介軟體是否為全域的(預設設定為 false
)。
範例
匿名路由中介軟體
匿名路由中介軟體沒有名稱。它採用函式作為第一個參數,使第二個 middleware
參數變得多餘
plugins/my-plugin.ts
export default defineNuxtPlugin(() => {
addRouteMiddleware((to, from) => {
if (to.path === '/forbidden') {
return false
}
})
})
具名路由中介軟體
具名路由中介軟體採用字串作為第一個參數,並採用函式作為第二個參數。
在外掛程式中定義時,它會覆蓋 middleware/
目錄中任何同名的現有中介軟體
plugins/my-plugin.ts
export default defineNuxtPlugin(() => {
addRouteMiddleware('named-middleware', () => {
console.log('named middleware added in Nuxt plugin')
})
})
全域路由中介軟體
設定一個可選的第三個參數 { 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 }
)
})