透過 100 多個技巧的集合學習 Nuxt!

addRouteMiddleware

addRouteMiddleware() 是一個輔助函式,用於在您的應用程式中動態新增中介軟體。
路由中介軟體是儲存在您的 Nuxt 應用程式的 middleware/ 目錄中的導航守衛(除非另行設定)。

類型

addRouteMiddleware (name: string | RouteMiddleware, middleware?: RouteMiddleware, options: AddRouteMiddlewareOptions = {})

參數

name

  • 類型: string | RouteMiddleware

可以是字串或 RouteMiddleware 類型的函式。函式接受下一個路由 to 作為第一個參數,以及當前路由 from 作為第二個參數,它們都是 Vue 路由物件。

了解更多關於路由物件的可用屬性。

middleware

  • 類型: RouteMiddleware

第二個參數是 RouteMiddleware 類型的函式。與上述相同,它提供 tofrom 路由物件。如果 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 }
  )
})