Vue 3 中 routes 与 route 的详解

1. 核心区别

特性routesroute
类型数组 (Array)对象 (Object)
作用定义路由规则 (路由表)访问当前激活的路由信息
使用场景路由配置 (router/index.js)组件内部访问当前路由
响应式否 (静态配置)是 (可监听变化)
数据内容路径、组件、子路由等配置信息路径、参数、查询字符串等运行时信息

2. API 详解

routes (路由配置)

// router/index.js
import { createRouter, createWebHistory } from 'vue-router'

const routes = [  //  👈 定义路由表数组
  {
    path: '/user/:id',
    name: 'user-profile',
    component: () => import('./views/User.vue'),
    props: true, // 将 params 转为 props
    children: [   // 嵌套路由
      { path: 'posts', component: () => import('./components/Posts.vue') }
    ]
  },
  { 
    path: '/about', 
    redirect: { name: 'home' } // 重定向
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes //  👈 传入路由配置
})

route (当前路由对象)

<!-- 组件内使用 -->
<script setup>
import { useRoute } from 'vue-router'

const route = useRoute() //  👈 获取当前路由对象

// 监听路由变化
watch(
  () => route.params.id,
  (newId) => {
    console.log('ID changed to:', newId)
  }
)
</script>

<template>
  <div>
    <!-- 访问路由属性 -->
    <p>当前路径: {{ route.path }}</p>
    <p>用户ID: {{ route.params.id }}</p>
    <p>查询参数: {{ route.query.page }}</p>
  </div>
</template>

route 关键属性

属性说明示例
path当前路径 (不含查询参数)/user/123
fullPath完整路径 (含查询参数和 hash)/user/123?page=2#section
params动态路径参数对象{ id: '123' }
queryURL 查询参数对象{ page: '2' }
hashURL 的 hash 部分#section
name路由名称 (如有定义)'user-profile'
matched匹配的路由记录数组嵌套路由层级信息
meta路由元信息{ requiresAuth: true }

3. 使用场景对比

操作routes 的用法route 的用法
获取路由参数❌ 无法直接获取✅ route.params.id
定义新路由✅ router.addRoute({ path: ... })❌ 只读属性
访问查询字符串❌ 配置阶段无此信息✅ route.query.page
路由重定向✅ { path: '/old', redirect: '/' }❌ 只读
监听路由变化❌ 静态配置✅ watch(() => route.path, ...)

4. 总结图表

关键结论

  1. routes 路由配置表,在创建路由实例时定义,描述所有可能的路径与组件的映射关系。

  2. route 当前路由状态对象,在组件内通过 useRoute() 获取,包含 URL 解析后的实时信息。

  3. 动态路由参数(如 :id)通过 route.params 访问,查询参数通过 route.query 访问。

  4. 使用 watch 监听 route 对象属性可实现基于路由的逻辑响应。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小风华~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值