route和router的区别

route和router的区别
匡思进前端路由傻傻分不清?route和router的区别,看完这篇别再搞混了!
一、前言:为什么这俩玩意儿容易搞混?
刚学前端路由时,我也被route和router搞得头晕眼花,面试还被问:”你能说说$route和$router的区别吗?” 我支支吾吾半天,面试官的表情逐渐凝固… 😅
今天,我们就来彻底搞懂这俩兄弟,让你以后再也不怕面试官的灵魂拷问!
二、一句话总结
router(路由器) :是管理路由的老大,负责整个路由的跳转、拦截、传参等。
route(路由信息) :是当前激活的路由对象,存储当前页面的路径、参数、查询参数等信息。
举个栗子 🌰:
router 就像快递公司的调度中心,决定包裹(页面)怎么配送。
route 就像你手里的快递单,记录当前包裹(页面)的信息(地址、收件人、订单号等)。
三、代码实战:Vue里的route和router
1. router(Vue Router实例)
router是全局路由管理器,负责跳转、拦截、动态路由等操作。
1 |
|
2. route(当前路由信息)
route是当前激活的路由对象,包含路径、参数、查询参数等信息。
1 |
|
四、React里的类似概念
React没有$router和$route,但概念是相通的:
router → BrowserRouter / HashRouter(React Router的管理者)
route → useLocation() / useParams()(当前路由信息)
1 |
|
五、常见误区 & 面试题
1. this.$router 和 this.$route 能互换吗?
❌ 不能!
this.$router 是路由管理器(负责跳转、拦截)。
this.$route 是当前路由信息(只读数据)。
2. 为什么动态路由要用params,而查询参数用query?
params(如/user/:id)→ 是路由的一部分,适合SEO、短链接。
query(如?name=小杨)→ 是额外参数,不影响路由匹配。
3. 编程式导航能用替代吗?
✅ 可以,但场景不同:
this.$router.push() → JS逻辑里用(比如登录后跳转)。
六、总结
对比项 | router | route |
---|---|---|
作用 | 路由管理(跳转、拦截) | 当前路由信息(路径、参数) |
类比 | 快递公司调度中心 | 你手里的快递单 |
Vue | this.$router | this.$route |
React | useNavigate() | useLocation() |
记住口诀:
router管跳转,route管信息
跳转找router,参数找route
七、最后的小故事
曾经我在项目里疯狂用this.$route.push(),结果控制台疯狂报错,debug半小时才发现… 我把router和route写反了! 😭
所以,看完这篇,千万别再搞混了! 🚀