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

Vue 3路由 (Vue Router) : 核心概念与实践指南

1. 什么是路由?

在现代 Web 开发中,路由 (Routing) 是单页应用 (SPA) 的核心机制。它负责管理 URL 地址与页面组件之间的对应关系。

当用户点击链接或在地址栏输入 URL 时,Vue Router 不会重新加载整个页面,而是根据配置的规则,动态地将对应的组件渲染到指定的占位符中。这提供了流畅的用户体验,避免了传统多页应用频繁刷新带来的性能损耗。

2. 路由核心三要素

一个完整的 Vue 路由系统主要由以下三个部分组成:

  1. 路由配置 (Route Rules): 定义 URL 路径与组件的映射表。
  2. 路由出口 (RouterView): 组件渲染的占位符,匹配到的组件将显示在这里。
  3. 导航方式 (Navigation): 触发路由切换的机制,包括声明式链接 (<RouterLink>) 和编程式导航 (router.push).

3. 项目配置解析

3.1 路由表定义 (src/router/index.ts)

在路由配置文件中,通过 createRouter 创建路由器实例,并定义了 routes 数组。

const routes = [{ path: '/', component: HomeView },{ path: '/about', component: AboutView },
]const router = createRouter({history: createWebHistory(), // 使用 HTML5 History 模式routes,
})

3.2 应用入口 (src/App.vue)

根组件 App.vue 承担了布局和路由出口的职责。

<template><h1>Hello App!</h1><nav><!-- 声明式导航:点击链接切换路由 --><RouterLink to="/">Go to Home</RouterLink><RouterLink to="/about">Go to About</RouterLink></nav><main><!-- 路由出口:匹配的 HomeView 或 AboutView 将在此渲染 --><RouterView /></main>
</template>

4. 视图组件详解

本项目包含两个主要视图,分别展示了 Vue Router 在 Options APIComposition API 两种风格下的使用方式。

4.1 HomeView:Options API 与编程式导航

src/views/HomeView.vue 演示了在传统的 Vue 2 风格(Options API)中如何使用路由。

核心代码分析:

export default {methods: {goToAbout() {// 编程式导航this.$router.push('/about')},},
}

关键点:

  • this.$router: 在 Options API 中,Vue Router 将路由器实例挂载到了 this 上。
  • push() 方法: 用于向历史记录栈添加一个新的记录。点击浏览器后退按钮可以回到前一个页面。
  • 场景: 适用于按钮点击、表单提交后跳转等非链接形式的页面切换。

4.2 AboutView:Composition API 与路由参数

src/views/AboutView.vue 演示了在 Vue 3 推荐的 <script setup> (Composition API) 中如何使用路由,并结合了 Query 参数的处理。

核心代码分析:

<script setup>
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'// 1. 获取实例
const router = useRouter() // 路由器实例(执行动作)
const route = useRoute()   // 当前路由信息(获取数据)// 2. 响应式 Query 参数处理
const search = computed({get() {// 读取 URL 中的 query 参数 (例如 /about?search=foo)return route.query.search ?? ''},set(search) {// 修改 URL 中的 query 参数router.replace({ query: { search } })}
})
</script>

关键点:

  • useRouter(): 等同于 Options API 中的 this.$router。用于执行跳转 (push, replace, go) 等操作。
  • useRoute(): 等同于 Options API 中的 this.$route。用于获取当前路径 (path)、参数 (params)、查询字符串 (query) 等信息。
  • replace() 方法: 与 push 不同,它替换当前的历史记录。主要用于参数更新,避免用户产生过多的历史记录条目。
  • 双向绑定: 通过 computed 属性,实现了输入框内容与 URL Query 参数的实时同步。

5. 总结

功能点 Options API (HomeView) Composition API (AboutView)
获取路由器 (执行跳转) this.$router useRouter()
获取路由信息 (读参数) this.$route useRoute()
导航方式 this.$router.push('/path') router.replace(...)
适用场景 Vue 2 遗留项目或传统写法 Vue 3 新项目推荐写法

通过对比 HomeViewAboutView,可以清晰地理解 Vue Router 在不同开发模式下的最佳实践。

http://www.jsqmd.com/news/335814/

相关文章:

  • <span class=“js_title_inner“>公司终于给我换了个牛B的显示器~</span>
  • Flutter for OpenHarmony Python学习助手实战:控制结构与流程控制的实现
  • Flutter for OpenHarmony Python学习助手实战:函数定义与高级用法的实现
  • 2026年开年唐山优秀的络合铁脱硫生产商 - 2026年企业推荐榜
  • 2026第26届立嘉国际智能装备展览会关注度高吗?参展能带来商机吗?
  • <span class=“js_title_inner“>研究发现,人工智能代理即将遭遇数学瓶颈</span>
  • 【jenkins】testng+allure报告
  • 2026年西安高性价比软件开发服务团队综合评估报告 - 2026年企业推荐榜
  • 2026年靠谱的四可设备用户口碑认可厂家 - 行业平台推荐
  • 2026年质量好的西安展柜/木质展柜热门品牌厂家推荐 - 行业平台推荐
  • <span class=“js_title_inner“>团队准备解散了…</span>
  • <span class=“js_title_inner“>DolphinDB:实时决策时代——AI与低延时计算如何重塑数字孪生</span>
  • RDF(Resource Description Framework) 入门理解
  • 刮泥机优质厂家权威盘点:6家实力厂商深度解析 - 2026年企业推荐榜
  • 音视频学习(八十八):mp4
  • <span class=“js_title_inner“>做了十年DBA,我为什么对“AI优化SQL”从警惕变为认同?</span>
  • 音视频学习(八十七):AVCC、HVCC和VVCC
  • SpringBoot+Vue 小区团购管理管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 2026年长沙原木定制批发商深度评估:三大顶尖厂商解析 - 2026年企业推荐榜
  • 2026年口碑好的西安卡箍式压力变送器厂家推荐必看 - 行业平台推荐
  • 2026年比较好的楔形节流式流量计/双量程节流式流量计行业内口碑厂家推荐 - 行业平台推荐
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(二)
  • 2026年质量好的V锥节流式流量计/多孔平衡节流式流量计厂家采购参考指南(必看) - 行业平台推荐
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(十)
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(三)
  • 2026年软件测试职业院校技能大赛—ERP管理平台-商品信息模块Bug定位与查找
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(四)
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(七)
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(一)
  • ZZ039移动应用与开发赛项模块A—移动应用界面设计原型图XD参考答案(八)