当前位置: 首页 > news >正文

相对路径跳转和绝对路径跳转有什么区别?

在 Vue 3 中使用路由跳转时,相对路径跳转和绝对路径跳转在使用方式、适用场景等方面存在明显区别,以下为你详细介绍:

定义

  • 绝对路径跳转:指的是使用完整的路径来进行路由导航,路径以 / 开头,无论当前处于哪个路由,都会直接跳转到该完整路径对应的页面。
  • 相对路径跳转:是基于当前路由的路径来进行跳转,不使用 / 开头,它会根据当前所在的路由位置来确定最终跳转的目标。

语法示例

假设当前路由为 /parent/child,有以下路由配置:

const routes = [
  {
    path: '/parent',
    component: Parent,
    children: [
      {
        path: 'child',
        component: Child
      },
      {
        path: 'sibling',
        component: Sibling
      }
    ]
  },
  {
    path: '/other',
    component: Other
  }
];
绝对路径跳转
<template>
  <button @click="goToOther">跳转到 /other</button>
</template>

<script setup>
import { useRouter } from 'vue-router';
const router = useRouter();

const goToOther = () => {
  router.push('/other');
};
</script>

这里无论当前处于哪个路由,点击按钮都会直接跳转到 /other 路径对应的页面。

相对路径跳转
<template>
  <button @click="goToSibling">跳转到 sibling</button>
</template>

<script setup>
import { useRouter } from 'vue-router';
const router = useRouter();

const goToSibling = () => {
  router.push('sibling');
};
</script>

由于当前路由是 /parent/child,使用相对路径 sibling 跳转时,会跳转到 /parent/sibling 路径对应的页面。

区别

跳转目标确定性
  • 绝对路径跳转:目标明确,不受当前路由位置的影响。无论在哪个页面触发跳转,都会精确地跳转到指定的完整路径页面。例如,始终能跳转到 /about 页面,不管当前处于 /home 还是 /products
  • 相对路径跳转:目标依赖于当前路由。同样的相对路径在不同的当前路由下,会跳转到不同的页面。比如在 /parent/child 路由下使用 sibling 跳转和在 /another/route 下使用 sibling 跳转,结果是不同的。
灵活性与可维护性
  • 绝对路径跳转:在代码中明确指定跳转目标,便于理解和维护,尤其在项目规模较大、路由结构复杂时,能清晰地知道跳转的目的地。但如果路由配置发生变化,涉及到绝对路径的跳转代码可能需要相应修改。
  • 相对路径跳转:在处理嵌套路由时非常灵活。当需要在同一父路由下的子路由之间进行切换时,使用相对路径可以减少代码中对完整路径的依赖,提高代码的可维护性。但相对路径的含义依赖于当前路由,可能会增加代码的理解难度。
适用场景
  • 绝对路径跳转:适用于需要从任意页面跳转到特定页面的场景,如从不同页面跳转到登录页、首页等。
  • 相对路径跳转:常用于在同一父路由下的子路由之间进行切换,或者在面包屑导航、多级菜单等场景中,根据当前页面位置进行相对跳转。

相关文章:

  • Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称
  • 【区块链 + 金融服务】寿险业直保再保协同平台 | FISCO BCOS 应用案例
  • 【计算机网络】一二章
  • java面试题之多线程
  • 怎么鉴别金媒v10.51和v10.5的区别!单单从CRM上区分!
  • Git 新建本地分支并关联到远程仓库
  • 在制作电脑的过程中,如何区分整机性能问题和应用自身性能问题
  • 【2025 最新 Cursor AI 教程 05】用 Cursor AI 解决常见开发问题
  • SpringMVC-登录校验
  • 【Leetcode】328. 奇偶链表
  • element-ui progress 组件源码分享
  • 初探大模型开发:使用 LangChain 和 DeepSeek 构建简单 Demo
  • vue中js简单创建一个事件中心/中间件/eventBus
  • P1591 阶乘数码
  • BFS,DFS带图详解+蓝桥杯算法题+经典例题
  • 如何在前端发版时实现向客户端推送版本更新消息
  • Java Date 判断两个Date范围在第几季度
  • 使用 Path 对象来定义路径
  • 在Vue3中使用Echarts的示例
  • 用户行为路径分析(Google Analytics数据挖掘)
  • 纪录电影《中国有戏:天幕计划》启动,有望太空播放
  • 在差异中建共鸣,《20世纪美国文学思想研究》丛书出版
  • 中国航天员乘组完成在轨交接,神十九乘组将于29日返回地球
  • “梅花奖”快闪走入上海张园,朱洁静在石库门前起舞
  • 韩国京畿道骊州市市长率团访问菏泽:想和菏泽一起办牡丹节
  • 交通枢纽、产业升级,上海松江新城有这些发展密码