You need to enable JavaScript to run this app. 如何在Vue.js 3中捕获所有以admin开头的路由
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue.js 3中捕获所有以admin开头的路由

Vue 3 匹配所有 /admin 开头路由的解决方案

你尝试的 /admin* 是 vue-router@3 及更早版本的通配符语法,Vue 3 配套的 vue-router@4 调整了通配符匹配规则,不再支持直接在路径后加 * 的写法,按以下两种方案配置即可生效:


方案1:嵌套路由(推荐,适配导航抽屉需求)

该方案可以直接把导航抽屉写在admin父路由的公共布局组件中,所有子路由天然共享抽屉组件,无需额外做路由判断,是同类需求的最佳实践:

// router/index.js 配置示例
import { createRouter, createWebHistory } from 'vue-router'
// AdminLayout 组件内编写导航抽屉代码,再添加 <router-view> 标签渲染子页面内容
import AdminLayout from '@/layout/AdminLayout.vue'

const routes = [
  // 其他非admin路由配置...
  {
    path: '/admin',
    component: AdminLayout,
    children: [
      // 匹配 /admin 根路径
      { path: '', component: () => import('@/views/admin/Index.vue') },
      // 匹配 /admin/users
      { path: 'users', component: () => import('@/views/admin/UserList.vue') },
      // 匹配 /admin/users/10 这类带参数的路径
      { path: 'users/:id', component: () => import('@/views/admin/UserDetail.vue') },
      // 可选:匹配/admin下所有未定义的路径做兜底
      { path: ':pathMatch(.*)*', component: () => import('@/views/404.vue') }
    ]
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

方案2:单路由通配符匹配所有/admin开头路径

如果你需要用单个路由捕获所有/admin开头的路径,使用/admin/:pathMatch(.*)*语法即可:

const routes = [
  {
    path: '/admin/:pathMatch(.*)*',
    component: () => import('@/views/AdminPage.vue')
  }
]

该配置可覆盖你提到的所有路径:/admin、/admin/users、/admin/users/10,匹配到的路径后缀可以通过$route.params.pathMatch获取,比如访问/admin/users/10时,$route.params.pathMatch的值为['users', '10']。


内容的提问来源于stack exchange,提问作者banky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 18:45:01