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

【Vue2 ✨】Vue2 入门之旅 · 进阶篇(七):Vue Router 原理解析

在前几篇文章中,我们介绍了 Vue 的性能优化机制、组件缓存等内容。本篇将深入解析 Vue Router 的原理,了解 Vue 如何管理路由并进行导航。


目录

  1. Vue Router 的基本概念
  2. 路由模式:hash 和 history
  3. 路由匹配原理
  4. 导航守卫
  5. Vue Router 的路由过渡动画
  6. 小结

Vue Router 的基本概念

Vue Router 是 Vue.js 官方提供的路由管理插件,负责管理 Vue 应用的页面导航。通过 Vue Router,开发者可以创建单页应用(SPA),在不同的视图间进行切换而无需重新加载页面。

Vue Router 的核心概念:

  • 路由配置:通过定义路由规则,告诉 Vue 哪个 URL 对应哪个组件。
  • 路由匹配:根据 URL 自动匹配对应的组件进行渲染。
  • 路由导航:实现页面跳转,通过编程式导航或声明式导航切换视图。

路由模式:hashhistory

Vue Router 支持两种路由模式:hash 模式history 模式。它们分别有不同的工作原理和适用场景。

1. Hash 模式

在 Hash 模式下,URL 中的路由信息会通过 # 符号来传递。浏览器不会重新加载页面,所有的路由切换都是通过修改 URL 后的哈希值来实现的。

http://example.com/#/home

优点:简单,兼容性好,不需要服务器支持。

缺点:URL 中包含 #,影响 SEOURL 美观。

2. History 模式

在 History 模式下,URL 使用的是 HTML5 提供的 History API,没有 # 符号。Vue Router 会监听浏览器的历史记录变化,来实现页面的跳转。

http://example.com/home

优点:URL 更加简洁,符合现代 Web 应用的标准。

缺点:需要服务器支持,必须配置服务器返回 index.html,否则刷新页面会 404


路由匹配原理

Vue Router 的路由匹配是基于 路径匹配组件渲染 的。Vue Router 会根据 URL 的路径找到匹配的组件,并将其渲染到页面上。

路由配置

路由的配置由 routes 数组定义,每个路由对象包含路径和组件两个属性。

复制代码
const routes = [{ path: '/home', component: Home },{ path: '/about', component: About }
]

路由匹配

当浏览器的 URL 地址变化时,Vue Router 会依次与路由配置中的每个路径进行匹配,直到找到符合的路径并渲染相应组件。

const router = new VueRouter({routes
})

动态路由

Vue Router 还支持动态路由,允许在路径中包含动态参数。

const routes = [{ path: '/user/:id', component: User }
]

当路径为 /user/123 时,id 会作为参数传递给 User 组件。


导航守卫

导航守卫是 Vue Router 中的一个强大功能,它允许你在路由变化之前、之后或路由进入、离开时执行某些逻辑。常见的导航守卫包括 全局守卫路由独享守卫组件内守卫

1. 全局守卫

全局守卫在路由变化之前或之后执行。可以使用 beforeEach 和 afterEach 方法进行配置。

复制代码
router.beforeEach((to, from, next) => {// 路由切换前的操作next()
})

2. 路由独享守卫

路由独享守卫是针对每个路由独立配置的守卫,可以在路由配置中直接添加 beforeEnter。

const routes = [{path: '/home',component: Home,beforeEnter: (to, from, next) => {// 路由独享守卫next()}}
]

3. 组件内守卫

组件内守卫是在组件生命周期中执行的守卫,通常用在单个组件中。

复制代码
export default {beforeRouteEnter(to, from, next) {// 进入路由前执行next()},beforeRouteLeave(to, from, next) {// 离开路由前执行next()}
}

Vue Router 的路由过渡动画

Vue Router 还支持路由切换时的过渡动画。通过 <transition> 标签包裹路由视图,可以为路由切换添加动画效果。

示例:

复制代码
<transition name="fade" mode="out-in"><router-view></router-view>
</transition><style>
.fade-enter-active, .fade-leave-active {transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {opacity: 0;
}
</style>

通过这种方式,可以为路由切换增加淡入淡出的动画效果,提高用户体验。


小结

  1. Vue Router 是 Vue.js 的官方路由管理工具,支持 hash 模式history 模式
  2. 路由匹配是基于路径和组件的,支持静态和动态路由。
  3. 导航守卫 提供了强大的功能,用于在路由变化时执行特定逻辑。
  4. 路由过渡动画 使得页面切换更为流畅和自然。

📗下一篇进阶文章,我们将学习 Vuex 内部机制,了解 Vuex 的核心工作原理以及如何管理状态。


文章转载自:

http://IjxU0v30.LLqch.cn
http://mloE0iP9.LLqch.cn
http://FFipN8Zw.LLqch.cn
http://P0movkBj.LLqch.cn
http://RNyeZToo.LLqch.cn
http://7Qm9Yddf.LLqch.cn
http://MdFpdbc6.LLqch.cn
http://qS8WYA5y.LLqch.cn
http://t3cQyaYg.LLqch.cn
http://J6seewqL.LLqch.cn
http://HtJt5ilP.LLqch.cn
http://auR9fVO6.LLqch.cn
http://q0SRbKuk.LLqch.cn
http://dyuQu9bw.LLqch.cn
http://7xBVMgrP.LLqch.cn
http://RrDpeOBq.LLqch.cn
http://r4EZ7nz7.LLqch.cn
http://dSYIBGLs.LLqch.cn
http://5XV0HTQn.LLqch.cn
http://eduUrnPk.LLqch.cn
http://1VI7CLKJ.LLqch.cn
http://85LQsSNR.LLqch.cn
http://14ImzX8T.LLqch.cn
http://lzov775j.LLqch.cn
http://xiDmCH9l.LLqch.cn
http://rjK09Lu4.LLqch.cn
http://H3JyQafd.LLqch.cn
http://5BkfOmYm.LLqch.cn
http://nD9FIGhQ.LLqch.cn
http://AoDfGtpe.LLqch.cn
http://www.dtcms.com/a/380707.html

相关文章:

  • Java 多线程(三)
  • 【tips】el-input-number 数字输入框初始值超出限制值后,v-model的问题
  • Red Hat Linux 全版本镜像下载
  • vm.nr_hugepages参数配置错误导致系统无法启动
  • 【Qt】Qt 设置全局字体
  • c++ cpp 多叉树简单处理文件重复包含问题
  • YOLO系列目标检测模型演进与YOLOv13深度解析
  • 【基础知识】仿函数与匿名函数对比
  • 澳鹏数据集月度精选 | 覆盖全模态理解、复杂推理、海量真题的快速部署方案
  • 2025年- H136-Lc191.位1的个数(位运算)--Java版
  • 第五节 JavaScript——引用类型、DOM/BOM 与异步编程
  • 基础算法之二分算法 --- 2
  • Vue3+JS 复杂表单实战:从验证到性能优化的全流程方案
  • 基于RAG的智能客服系统
  • 建自己的Python项目仓库,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
  • 容器使用卷
  • Vue3:根据el-input封装全局v-focus指令
  • 企业AI战略构建与成品选择指南
  • Semaphore和CountDownLatch
  • 实战ELK与AI MCP:构建高可用的智能化日志可观测体系
  • SAP-MM:SAP MM学习分享:深入浅出解析物料需求计划(MRP)及MRP配置图解
  • 【LLM】使用 Google ADK、Gemini、QDrant 和 MCP 构建深度研究系统
  • 【CSS学习笔记2】-css复合选择器
  • 186. Java 模式匹配 - Java 21 新特性:Record Pattern(记录模式匹配)
  • Electron下载失败
  • Origin绘制双Y轴网格叠加图|科研论文图表教程(附数据排列格式)
  • XXL-JOB框架SRC高频漏洞分析总结
  • 未启用Spring事务管理 执行mapper.xml文件的sql,为什么会自动提交
  • 亚马逊云代理:亚马逊云怎么样进行大规模数据分析与处理?
  • Linux防火墙iptables