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

4个 Vue 路由实现的过程

大家好,我是大澈!一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员👨🏻‍💻,关注我,科技未来或许我能帮到你!

Vue 路由相信朋友们用的都很熟了,但是你知道 Vue 路由是如何实现的吗?

其实,前端路由是通过监听URL的变化,然后根据不同的URL路径显示不同的页面内容。

而 Vue 路由的实现,大体可归结为这 4 个过程:

图片

下面我拆成 5 部分来一一讲解!

一、检测 URL 变化

说起检测 URL 变化,主要是还是聊聊 Vue 的两种路由模式。

1、Hash 模式

Hash 模式是指在 URL 中添加 # 符号,例如:xxx/#/path。

核心机制:通过 window.location.hash 修改 URL 的哈希部分(即 # 后的内容),并配合使用 hashchange 事件实现检测 URL 变化。

兼容性:支持所有浏览器(包括 IE9 及以下)。

2、History 模式

History 模式是指在 URL 中无 # 符号,路径更简洁,例如:xxx/path。

核心机制:通过 HTML5 的 history.pushState()  或  history.replaceState() 方法修改路径,并配合使用 popstate 事件实现检测 URL 变化。

兼容性:依赖 HTML5 History API,支持 IE10+ 及现代浏览器,且需配置服务器将所有请求重定向到首页,避免 404 错误。

二、匹配路由

提取当前 URL 的路径(如 /user/123),遍历路由表(routes 数组),找到与当前路径匹配的路由规则。

一旦匹配到路由后,会将路由对应的组件、元信息(meta)、动态参数(params)以及查询参数(query)等数据整合在一起,生成一个路由对象(如 { path: '/xxx', component: xxx, ... })。

三、执行守卫

在路由切换前,依次执行各类导航守卫做权限/数据等检查。

如果守卫中调用了 next(false),或者抛出了错误,就会中断导航。如果守卫异步逻辑执行成功,并调用 next(),则继续执行下一个守卫,直到所有守卫执行完毕。

四、更新状态

通常,路由对象会存放在一个响应式数据源(如 currentRoute)中。

当我们给 currentRoute 赋值一个新的路由信息时,就会触发依赖它的组件(如 <router-view>)更新。

五、渲染组件

最后走 Vue 数据响应式更新那一套,完成页面重新渲染。

关于 Vue 数据响应式原理,不懂的朋友可以看我之前的内容哈!

好了,今天要分享的内容就是这么多,联系和更多内容在绿色App搜【程序员大澈】,最后感谢朋友们给个点赞、分享、推荐,拜拜~

相关文章:

  • Unity大型游戏开发全流程指南
  • 3.9[A]csd
  • Gazebo 启动时候配置物体
  • llama.cpp编译
  • 任务11:路由器配置与静态路由配置
  • Web网页制作(静态网页):千年之恋
  • INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性
  • nlp培训重点-5
  • 【Python】Hydra 用法详解
  • web—HTML
  • 【Java篇】数据类型与变量:窥见程序的天地万象
  • wireshark点击快捷无法打开
  • 基于python大数据的招聘数据可视化与推荐系统
  • stackqueue
  • Python 实现图片提取文字
  • 基于yolov11的西红柿番茄叶子病害检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • WinForm模态与非模态窗体
  • 低空经济快速发展,无人机人才培养及校企实验室共建技术详解
  • Eclipse 查看 JAVA SE 23 官方API 源代码
  • 【0基础跟AI学软考高项】成本管理
  • 以开放促发展,以发展促开放,浙江加快建设高能级开放强省
  • 公示资费套餐、规范营销行为,今年信息通信行业将办好这十件实事
  • 上海博物馆展览进校园,“小先生”传递文物知识
  • 土耳其、美国、乌克兰三边会议开始
  • 车载抬头显示爆发在即?业内:凭借市场和产业链优势,国内供应商实现反超
  • 京东回应外卖系统崩溃:订单暴涨所致,已恢复