vue3 vue-router 404 重定向 别名 嵌套路由 命名视图 元信息 (三)

文章目录

一、404 Not found 路由

当用户输入任何未知的路径时,Vue Router都将显示我们定义的404页面。这种方式使得我们能够更好地控制用户访问未知路径时的行为,提供更友好和统一的用户体验

javascript 复制代码
// 添加通配符路由
  { path: '/:catchAll(.*)', component: () => import("@/views/notFound/index.vue"), }

二、重定向

通过重定向,可以将一个路径重定向到另一个指定的路径

javascript 复制代码
 {
    path: "/home",
    name: "home",
    component: () => import("@/views/home/index.vue"),
  },
  {
    path: "/login",
    redirect: { path: "/home" },
  },

三、别名

可以使用别名来为路由配置添加额外的路径。这在某些情况下非常有用,比如需要将旧的路径重定向到新的路径,同时保留旧路径仍然可以访问

javascript 复制代码
{
    path: "/home",
    name: "home",
    alias: "/index",
    component: () => import("@/views/home/index.vue"),
  },

四、嵌套路由

可以使用Vue Router来配置嵌套路由,创建具有层次结构的路由布局

javascript 复制代码
{
    path: '/parent',
    component: ParentComponent,
    children: [
      {
        path: 'child',
        component: ChildComponent
      }
    ]
  }

当用户访问/parent时,ParentComponent会渲染,并且ChildComponent会出现在<router-view>中。

五、命名视图

同一个路由中同时渲染多个组件。这对于需要在同一页面上显示多个组件的情况非常有用

javascript 复制代码
<router-view name="sidebar"></router-view>
<router-view ></router-view>
javascript 复制代码
 {
    path: '/',
    components: {
      default: ComponentA,
      sidebar: ComponentB
    }
  }

在上面的示例中,我们为根路径/的路由配置中定义了两个组件:ComponentA 和 ComponentB,分别被命名为 default 和 sidebar。这意味着 ComponentA 将会被渲染到默认的 <router-view> 中,而 ComponentB 将会被渲染到名为 sidebar 的 <router-view> 中。

六、路由元信息

可以使用路由元信息(Route Meta Fields)来为路由添加自定义数据或标记。这些元信息可以帮助我们在导航守卫、组件钩子或其他地方访问到特定路由的相关信息

设置路由元信息

javascript 复制代码
{
    path: "/home",
    name: "home",
    alias: "/index",
    component: () => import("@/views/home/index.vue"),
    meta: { requiresAuth: true },
    children: [
      {
        path: "child",
        component: () => import("@/views/child/index.vue"),
      },
    ],
  },
  {
    path: "/about/:id",
    name: "about",
    meta: { requiresAuth: false },
    component: () => import("@/views/about/index.vue"),
  },

访问路由元信息

javascript 复制代码
// 在导航守卫中访问路由元信息
router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth) {
    // 需要身份验证的逻辑...
  } else {
    // 不需要身份验证的逻辑...
  }
})
javascript 复制代码
if (route.meta.requiresAuth) {
  // 需要身份验证的逻辑...
} else {
  // 不需要身份验证的逻辑...
}
相关推荐
逐·風3 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫3 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦4 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子4 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享5 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
程序媛小果5 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
从兄6 小时前
vue 使用docx-preview 预览替换文档内的特定变量
javascript·vue.js·ecmascript
凉辰7 小时前
设计模式 策略模式 场景Vue (技术提升)
vue.js·设计模式·策略模式
清灵xmf7 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询