news 2026/5/1 21:24:10

Vue 2 路由指南:从入门到实战优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 2 路由指南:从入门到实战优化

Vue 2 路由指南:从入门到实战优化

在开发单页应用(SPA)时,Vue Router 是必不可少的工具。它让我们能够在不刷新页面的情况下切换视图。今天我们就来根据学习笔记,系统地梳理一下 Vue Router 的核心用法,从基础跳转到参数传递,再到性能优化。

一、 为什么不用 a 标签?(声明式导航)

在 Vue 中,我们通常不推荐使用原生的<a href="...">标签进行跳转。

  1. 刷新问题:a 标签会导致页面刷新,丧失 SPA 的体验。
  2. 样式管理:我们需要手动处理“哪个链接是高亮状态”,非常繁琐。

解决方案:<router-link>

Vue Router 提供了一个全局组件<router-link>

  • 无刷新跳转:本质还是 a 标签,但拦截了点击事件。
  • 自动高亮:它会自动给当前匹配的链接添加 CSS 类名。
<router-linkto="/home">首页</router-link>

高亮原理

当路由激活时,Vue 会自动添加两个类名:

  1. router-link-active(模糊匹配):最常用。比如/my会点亮,/my/order也会点亮它。
  2. router-link-exact-active(精确匹配):只有路径完全一致(例如就是/my)时才点亮。

小技巧:觉得类名太长?可以在new VueRouter时通过linkActiveClass配置项自定义类名。


二、 JS 代码怎么跳?(编程式导航)

有时候我们需要在逻辑执行完(比如登录成功、搜索表单提交)后跳转,这时就不能用 HTML 标签,而要用 JS。

1. path 路径跳转(简单直接)

适合短路径,但不能配合params对象传参。

// 简单写法this.$router.push('/home')// 带查询参数 /home?id=1this.$router.push('/home?id=1')

2. name 命名路由跳转(推荐长路径)

适合路径很长或嵌套很深的场景,需要先在路由配置里给路由起个name

// 路由配置: { path: '/user/profile/edit', name: 'UserEdit', ... }this.$router.push({name:'UserEdit'})

三、 路由传参:Query vs Params

这是新手最容易晕的地方,记住这句口诀:Query 像 GET 请求带问号,Params 像 动态路径。

1. 查询参数 (Query)

  • 表现:URL 长这样/detail?id=10&name=vue
  • 适用:多个参数,非核心数据。
  • 传递
    this.$router.push({path:'/detail',query:{id:10}})
  • 接收
    this.$route.query.id

2. 动态路由 (Params)

  • 表现:URL 长这样/detail/10
  • 适用:优雅、核心参数(如文章ID)。
  • 前提:必须先配置路由规则path: '/detail/:id'
  • 传递
    // 方式1:拼字符串this.$router.push('/detail/10')// 方式2:用 name (注意:不能用 path 配合 params 对象!)this.$router.push({name:'Detail',params:{id:10}})
  • 接收
    this.$route.params.id

四、 路由配置三剑客

1. 重定向 (Redirect)

解决用户访问根路径/时白屏的问题。

{path:'/',redirect:'/home'}

2. 404 页面

利用通配符*,一定要放在路由数组的最后面

{path:'*',component:NotFound}

3. 路由模式

  • Hash (默认):URL 带#,兼容性好。
  • History:URL 正常(无#),需要后端配置支持,否则刷新会 404。

五、 进阶:嵌套路由 (Children)

当页面中只有局部内容需要切换(例如:首页底部 TabBar 不变,中间内容变),就要用嵌套路由。

  1. 配置:在父路由中使用children数组。
  2. 出口:在父组件.vue文件中放置<router-view>
// router/index.js{path:'/home',component:Layout,children:[{path:'article',component:Article},// 注意:二级路由路径不要加 /{path:'user',component:User}]}

六、 性能优化:Keep-Alive(了解)

场景:用户从“文章列表”点进“详情页”,再返回“列表页”时,列表页的数据会重新刷新,滚动条也会回到顶部。这体验不好。

原因:路由切换默认会销毁旧组件,创建新组件。

解决:使用 Vue 内置组件<keep-alive>包裹路由出口,缓存组件实例。

<keep-alive:include="['LayoutPage']"><router-view></router-view></keep-alive>

生命周期变化
组件被缓存后,createdmounted只会执行一次。如果需要每次进入页面都执行逻辑,请使用:

  • activated:组件激活(进入)时触发。
  • deactivated:组件失活(离开)时触发。

总结

Vue Router 的核心在于理解声明式编程式导航的区别,以及熟练掌握QueryParams的传参方式。在实际项目中,合理使用嵌套路由构建布局,并利用Keep-Alive优化用户体验,能让我们的 SPA 应用更加丝滑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 16:02:07

Thinkphp和Laravel框架基于vue框架的网上烘焙蛋糕商城销售系统-vue

目录具体实现截图项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万字以上 同行可拿货,招校园代理 Thinkphp和Laravel框架基于vue框架的网上烘焙蛋糕商城销售系统…

作者头像 李华
网站建设 2026/4/23 14:01:24

Excalidraw评论与标注功能在评审中的作用

Excalidraw评论与标注功能在评审中的作用 在一次跨时区的架构评审会议上&#xff0c;团队成员盯着共享屏幕中密密麻麻的微服务组件图&#xff0c;反复确认&#xff1a;“你说的‘这个模块’到底是哪个&#xff1f;”——这样的场景在远程协作中屡见不鲜。静态截图配上文字描述的…

作者头像 李华
网站建设 2026/4/29 16:45:20

测试外包项目的质量管理与控制方法

在软件测试领域&#xff0c;外包模式已成为企业优化资源、降低成本的重要手段。然而&#xff0c;外包测试项目面临着地理分散、沟通障碍、标准差异等多重挑战&#xff0c;使得质量管理与控制变得尤为关键。有效的质量控制不仅能确保交付成果符合预期&#xff0c;还能维护合作双…

作者头像 李华
网站建设 2026/4/23 15:35:46

为什么你的Open-AutoGLM模型效果上不去?90%的人忽略了这4类数据问题

第一章&#xff1a;Open-AutoGLM 模型训练数据优化的核心挑战在构建和优化 Open-AutoGLM 这类大规模语言模型的过程中&#xff0c;训练数据的质量与结构直接决定了模型的推理能力、泛化性能以及对下游任务的适配性。然而&#xff0c;当前面临的数据优化挑战复杂且多维&#xff…

作者头像 李华
网站建设 2026/4/26 23:23:31

flask基于Spark的共享单车数据存储系统的设计与实现--论文-爬虫 可视化

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 flask基于Spark的共享单车数据存储系统的设计与实现–论文-爬虫 可视化 项目简…

作者头像 李华
网站建设 2026/4/26 8:45:27

【大模型运维必修课】:Open-AutoGLM崩溃自动恢复的5个关键设计原则

第一章&#xff1a;Open-AutoGLM 异常崩溃自动修复概述Open-AutoGLM 是一个面向大型语言模型推理服务的自动化运维框架&#xff0c;专注于在模型运行过程中识别并修复异常崩溃问题。该系统通过实时监控、故障诊断与自愈机制的协同工作&#xff0c;显著提升服务稳定性与可用性。…

作者头像 李华