前端路由傻傻分不清?route和router的区别,看完这篇别再搞混了!

一、前言:为什么这俩玩意儿容易搞混?

刚学前端路由时,我也被routerouter搞得头晕眼花,面试还被问:"你能说说$route$router的区别吗?" 我支支吾吾半天,面试官的表情逐渐凝固... 😅

今天,我们就来彻底搞懂这俩兄弟,让你以后再也不怕面试官的灵魂拷问!


二、一句话总结

  • router(路由器) :是管理路由的老大,负责整个路由的跳转、拦截、传参等。
  • route(路由信息) :是当前激活的路由对象,存储当前页面的路径、参数、查询参数等信息。

举个栗子 🌰

  • router 就像快递公司的调度中心,决定包裹(页面)怎么配送。
  • route 就像你手里的快递单,记录当前包裹(页面)的信息(地址、收件人、订单号等)。

三、代码实战:Vue里的routerouter

1. router(Vue Router实例)

router是全局路由管理器,负责跳转、拦截、动态路由等操作。

javascript 复制代码
// 在Vue组件里使用
export default {
  methods: {
    我的跳转方法() {
      // router.push() 用于跳转
      this.$router.push('/home'); // 跳转到首页
      
      // router.replace() 替换当前路由(不记录历史)
      this.$router.replace('/login');
      
      // router.go() 前进/后退
      this.$router.go(-1); // 返回上一页
    }
  }
}

2. route(当前路由信息)

route是当前激活的路由对象,包含路径、参数、查询参数等信息。

javascript 复制代码
export default {
  created() {
    // 获取当前路由信息
    console.log(this.$route.path);    // 当前路径,比如 "/user/123"
    console.log(this.$route.params); // 动态参数,比如 { id: "123" }
    console.log(this.$route.query);   // 查询参数,比如 ?name=小杨 → { name: "小杨" }
  }
}

四、React里的类似概念

React没有$router$route,但概念是相通的:

  • routerBrowserRouter / HashRouter(React Router的管理者)
  • routeuseLocation() / useParams()(当前路由信息)
javascript 复制代码
import { useNavigate, useLocation, useParams } from 'react-router-dom';

function 我的组件() {
  const navigate = useNavigate(); // 相当于 this.$router
  const location = useLocation(); // 相当于 this.$route
  const params = useParams();     // 相当于 this.$route.params

  const 跳转首页 = () => {
    navigate('/home'); // 相当于 this.$router.push('/home')
  };

  return (
    <div>
      当前路径:{location.pathname} <br />
      参数:{params.id}
    </div>
  );
}

五、常见误区 & 面试题

1. this.$routerthis.$route 能互换吗?

不能!

  • this.$router路由管理器(负责跳转、拦截)。
  • this.$route当前路由信息(只读数据)。

2. 为什么动态路由要用params,而查询参数用query

  • params (如/user/:id)→ 是路由的一部分,适合SEO、短链接。
  • query (如?name=小杨)→ 是额外参数,不影响路由匹配。

3. 编程式导航能用<router-link>替代吗?

可以,但场景不同

  • <router-link>模板里用 (类似<a>标签)。
  • this.$router.push()JS逻辑里用(比如登录后跳转)。

六、总结

对比项 router route
作用 路由管理(跳转、拦截) 当前路由信息(路径、参数)
类比 快递公司调度中心 你手里的快递单
Vue this.$router this.$route
React useNavigate() useLocation()

记住口诀:

  • router管跳转,route管信息
  • 跳转找router,参数找route

七、最后的小故事

曾经我在项目里疯狂用this.$route.push(),结果控制台疯狂报错,debug半小时才发现... 我把routerroute写反了! 😭

所以,看完这篇,千万别再搞混了! 🚀

⭐ 写在最后

请大家不吝赐教,在下方评论或者私信我,十分感谢🙏🙏🙏.

✅ 认为我某个部分的设计过于繁琐,有更加简单或者更高逼格的封装方式

✅ 认为我部分代码过于老旧,可以提供新的API或最新语法

✅ 对于文章中部分内容不理解

✅ 解答我文章中一些疑问

✅ 认为某些交互,功能需要优化,发现BUG

✅ 想要添加新功能,对于整体的设计,外观有更好的建议

✅ 一起探讨技术加qq交流群:906392632

最后感谢各位的耐心观看,既然都到这了,点个 👍赞再走吧!

相关推荐
崔庆才丨静觅1 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60612 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅2 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅3 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅3 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊3 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax