Appearance
defineNuxtRouteMiddleware
- 创建命名路由中间件
defineNuxtRouteMiddleware
是一个用于创建命名路由中间件的辅助方法。
TIP
路由中间件是存储在 Nuxt 应用程序的middleware
目录中的导航卫士(除非另有设置)。
类型
defineNuxtRouteMiddleware(middleware: RouteMiddleware) => RouteMiddleware
interface RouteMiddleware {
(to: RouteLocationNormalized, from: RouteLocationNormalized): ReturnType<NavigationGuard>
}
参数
middleware
- Type: RouteMiddleware
一个接收两个 Vue Router 的路由对象作为参数的函数:第一个参数是to
(即将要进入的路由),第二个参数是from
(当前导航正要离开的路由)。
了解有关Vue Router 文档中
RouteLocationNormalized
的更多信息。
示例:显示错误页面
使用路由中间件抛出错误并显示有用的错误消息
// ~/middleware/error.ts
export default defineNuxtRouteMiddleware((to) => {
if (to.params.id === '1') {
throw createError({ statusCode: 404, statusMessage: 'Page Not Found' })
}
})
上述路由中间件将用户重定向到~/error.vue
文件中定义的自定义错误页面,并公开从中间件传递的错误消息和代码。
示例:重定向
在路由中间件中结合使用useState
和navigateTo
辅助方法,根据用户的认证状态重定向到不同的路由。
// ~/middleware/auth.ts
export default defineNuxtRouteMiddleware((to, from) => {
const auth = useState('auth')
if (!auth.value.isAuthenticated) {
return navigateTo('/login')
}
return navigateTo('/dashboard')
})
navigateTo
和abortNavigation
都是全局可用的辅助f方法,可以在defineNuxtRouteMiddleware
中使用