vue路由的两种模式 hash与history

news2024/11/24 17:17:22

在这里插入图片描述

文章目录

  • vue路由是什么?
    • Hash 模式
        • Hash具体的原理如下:
        • Hash 模式的好处
        • 缺点
    • History 模式
        • 实现 History 模式的原理如下:
        • History 模式的好处
        • 缺点


vue路由是什么?

Vue 路由是 Vue.js 框架提供的一种机制,用于实现单页面应用(Single-Page Application,简称 SPA)中的前端路由功能。它允许通过定义不同的路由路径和对应的组件,来管理应用程序中不同页面或视图的展示和切换。

Vue 路由使用了浏览器的 History API 或 hash(#)来实现路由导航。通过配置路由映射关系,将 URL 的不同路径与对应的 Vue 组件关联起来。当用户点击链接或执行特定操作时,Vue 路由可以动态地加载所需的组件并更新页面内容,而无需重新加载整个页面。这样,用户可以在单页应用中快速、平滑地切换页面,获得更好的用户体验。

在 Vue 路由中,可以定义多个路由,并指定每个路由对应的路径和组件。可以通过编程式导航或声明式导航的方式,根据具体的需求,在不同的组件之间切换路由。Vue 路由还支持参数传递、路由守卫、嵌套路由等功能,以满足复杂的应用场景。

使用 Vue 路由,可以轻松构建交互丰富、界面流畅的单页面应用,有效管理页面之间的导航和状态切换。

Vue的路由有两种模式:Hash 模式和 History 模式。


Hash 模式

在这种模式下,URL 中的路由路径会以 # 符号作为分隔符。例如,http://example.com/#/home。
Hash 模式的好处是它不会触发页面的刷新,所有的路由都在客户端进行处理,并且兼容性较好,可以在不同的浏览器和服务器配置中使用。

Vue 路由的 Hash 模式是通过修改 URL 中的哈希(hash)部分来实现的。在 Hash 模式下,URL 中的路由路径会以 # 符号作为分隔符。例如,http://example.com/#/home。

当用户切换路由时,Vue 路由会监听 URL 的 hashchange 事件,一旦 URL 的哈希部分发生变化,它就会根据新的哈希值找到对应的路由配置,并动态地加载所需的组件并更新页面内容,形成页面无刷新的效果。

所以,在使用 Hash 模式时,每次切换路由都会修改 URL 的哈希部分,而不会改变实际的 URL 路径,因此刷新页面或直接访问某个子路由时,需要保证服务器能正确响应前端路由请求,返回正确的页面内容。

Hash具体的原理如下:

  1. Vue 路由会创建一个全局的监听器,监听浏览器的 hashchange 事件。
  2. 当用户点击链接或执行特定操作时,Vue 路由会将对应的路由路径解析出来,并将该路径的哈希部分设置为当前 URL 的哈希部分。例如,点击了一个链接,将路由路径 ‘/home’ 解析出来,然后将 ‘home’ 设置为 URL 的哈希部分,即 http://example.com/#/home。
  3. 浏览器会自动触发 hashchange 事件,Vue 路由监听到事件后,根据新的哈希值找到对应的路由配置,并根据配置信息动态加载对应的组件,更新页面内容,完成路由导航的过程。

Hash 模式的好处

  • 不会触发页面的刷新
  • 所有的路由都在客户端进行处理
  • 并且兼容性较好
  • 可以在不同的浏览器和服务器配置中使用

缺点

但同时,URL 中的 # 符号可能对SEO不太友好,并且在 URL 中出现了冗余信息。


History 模式

在这种模式下,URL 中的路由路径没有 # 符号,看起来更加美观。例如http://example.com/home。
History 模式依赖 HTML5 的 History API,它通过修改浏览器的历史记录来实现前端路由的切换。与 Hash 模式相比,History 模式的 URL 更加友好,但需要服务器配置支持,确保在每个路由都返回正确的页面,即使在刷新页面或直接访问某个子路由时也能正常工作。

在 Vue 中,默认采用的是 Hash 模式,你可以通过配置 mode: ‘history’ 来启用 History 模式,同时需要在服务器端进行相应的配置,以确保在各种情况下都能正确响应前端路由请求。

总结一下,Hash 模式使用 # 符号,不会触发页面刷新,兼容性较好;History 模式去除了 # 符号,需要服务器配置支持,URL 更加友好。

实现 History 模式的原理如下:

  1. 当用户访问一个 Vue 路由应用时,服务器需要配置一个默认页面(比如 index.html),用于处理与前端路由相关的请求。
  2. 当用户切换路由时,Vue 路由会调用浏览器的 History API,通过 pushState 或 replaceState 方法修改当前的历史记录,并将新的路径添加到浏览器的历史栈中。
  3. Vue 路由还会监听 popstate 事件,当用户点击浏览器的前进或后退按钮时,会触发该事件,Vue 路由会根据新的路径找到对应的路由配置,并动态地加载所需的组件并更新页面内容,完成路由导航的过程。

在 History 模式下,服务器需要正确配置,确保在直接访问某个子路由时返回应用的默认页面(比如 index.html),这样前端路由才能接管路由请求并正确展示对应的页面内容。

History 模式的好处

History 模式相比于 Hash 模式更加符合传统的 URL 形式,没有冗余的 # 符号,对搜索引擎更友好。

缺点

但需要注意的是,在使用 History 模式时,服务器需要正确配置以处理前端路由请求,并且要注意兼容性,因为一些旧版本的浏览器可能不支持 History API。如果在不支持的情况下,Vue 路由会自动降级到 Hash 模式来保证路由功能的正常运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

驱动开发:内核解锁与强删文件

在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理是通过调用ObSetHandleAttri…

【科学文献计量】关于使用metaknowledge读取文献后转化字典结构报错PD问题的解决方式

关于使用metaknowledge读取文献后转化字典结构报错PD问题的解决方式 1 问题说明2 问题探索3 问题解决4 数据核实1 问题说明 在进行文献下载完毕后,使用metaknowledge读入文献时候是正常的,但是要通过RC.makeDict()方法转化为字典结构,却发生了PD报错问题(KeyError: PD),如…

基于SpringBoot+vue的在线考试系统设计和实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

阿里云新人专享是什么意思?是新注册用户还是新用户或者老用户?

阿里云2023年促销活动中云服务器购买条件大多都指定为新人专享,有的用户购买提示“不满足购买条件”,有的虽然能买,但是点击购买之后的价格却跟活动显示价格有很大的出入,活动中的云服务器会提示“新人专享”,那么什么…

Python爬取城市天气数据,并作数据可视化

1.爬取广惠河深2022-2024年的天气数据 import requests # 发送请求要用的模块 需要额外安装的 import parsel import csvf open(广-惠-河-深天气.csv, modea, encodingutf-8, newline) csv_writer csv.writer(f) csv_writer.writerow([日期, 最高温度, 最低温度, 天气,…

EEPROM 磨损管理算法

这里写目录标题 前言需求结构局限性代码示例 前言 …最近工作上有用到EEPROM,在我的应用中需要一分钟一次的擦写频率,按照设备一天工作16h,十年的设备设计寿命来计算,大概要擦写300万次。超出了一般的EEPROM擦写循环次数100万。 …

【前端 - CSS】第 17 课 - CSS 特性

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、CSS 三大特性 2.1、继承性 2.2、层叠性 2.3、优先级 3、总结 1、缘起 CSS 是一种用于样式化网页的语言&#xf…

无代码开发smardaten与Power Platform详细对比

文章目录 前言:亟待转型的软开创业者什么是低/无代码居高不下的企业级软件搭建成本1. 开发周期较长2. 在需求明确、软件修改、系统集成等方面存在多种卡点3. 数据管理混乱 无代码/低代码开发,时代的潮流无代码平台 smardaten1. smardaten 简介2. smardat…

一起看 I/O | 将 Kotlin 引入 Web

作者 / 产品经理 Vivek Sekhar 我们将在本文为您介绍 JetBrains 和 Google 的早期实验性工作。您可以观看今年 Google I/O 大会中的 WebAssembly 相关演讲,了解更多详情: https://youtu.be/RcHER-3gFXI?t604 应用开发者想要尽可能地在更多平台上最大限度地吸引用户…

高阶智驾进入「普及」周期,这四家车企包揽年度方案创新奖

特斯拉、理想等新能源汽车头部企业推动的NOA高阶智能驾驶上车潮,正在席卷整个汽车行业。包括吉利、广汽、长安、红旗等头部自主品牌也在加速推进,同时,在NOA、电子电气架构、数据闭环平台等方面,实现科技平权。 6月8-9日&#xff…

三菱FX3U中级课程-模拟量与PID

可别小看FX3U,它的功能比西门子200smart要强大,对于使用三菱PLC的设备,很多小型设备都可以用FX3U来做。 ​​ 三菱FX3U模拟量与PID 课程章节 第一节课 必须知道的模拟量理论知识 - 大白话讲解00:50:33 第二节课 通过测量空压机的压力才学习…

不确定 A Survey of Uncertainty in Deep Neural Networks(乱记)

随着深度学习技术的不断发展,DNN模型的预测能力变得越来越强,然而在一些情况下这却并不是我们想要的,比如说给模型一个与训练集完全不相关的测试样本,我们希望模型能够承认自己的“无知”,而不是强行给出一个预测结果&…

【深度学习】1 感知机(人工神经元)

认识感知机 感知机接收多个输入信号,输出一个信号 感知机的信号只有“流/不流”(1/0)两种取值 0对应“不传递信号”,1对应“传递信号”。 输入信号被送往神经元时,会被分别乘以固定的权重。神经元会计算传送过来的信号的综合,只有…

云平台 stm32连接oneNET保姆级别教学只看这一篇就够了~

1 注册账号 oneNET点击直达 如图点击右上角开发者中心 点击多协议接入 点击添加产品 如下图设置参数 点击立即添加设备 点击添加设备 如下图设置参数 点击右边的详情查看设备ID和鉴权信息 点击产品概况获取 产品ID 平台注册告一段落 你现在拥有了一个oneNET账号 设备ID …

easycode-自定义的模板-类型对应问题

一、遇到的问题 1、mysql数据库中有些字段没有生成到 在图形工具中修改了表结构 ,增加了字段,这个时候要在idea中刷新下数据库 2、数据库中有tinyint 类型的字段,生成代码后mapper.xml中jdbcType总是BYTE,但是mybatis中并没有BYT…

echarts分割柱形图实现渐变电量效果柱状图

先看下效果图是这个样子的 ,和普通的柱状图最明显的区别就是需要做成类似于电池格电量显示效果。 目录 1、官网找例子 2、改造示例 3、全部代码 4、初始效果和完成效果对比 1、官网找例子 首先到Echarts官网找到基础的柱状图 官网初始option 我们将option复制到…

一文教你彻底学会IIC协议

一文教你如何看懂I2C协议 一.序言二.IIC读写过程2.1主机向从机写入数据2.2主机向从机读取数据2.3 I2C起始信号和停止信号 三. 数据的有效性四.时序要求4.1 起始信号4.2 终止信号4.3 应答信号4.4 非应答信号读取数据五.代码实例 结语 一.序言 背景知识:I2C总线上是通…

顶奢好文:3W字,穿透Spring事务原理、源码,至少读10遍

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如阿里、美团、极兔、有赞、希音的面试资格,Spring事务源码的面试题,经常遇到: (1) spring什么情况下进行事务回滚? (2) spring 事务…

微服务springcloud 04. 远程调用,负载平衡,重试,ribbon框架

01.springcloud中关于远程调用,负载平衡。 02.远程调用 ribbon 提供了负载均衡和重试功能, 它底层是使用 RestTemplate 进行 Rest api 调用RestTemplate,RestTemplate 是SpringBoot提供的一个Rest远程调用工具。 它的常用方法: getForObject() - 执行…

「深度学习之优化算法」(六)遗传算法

1. 遗传算法简介 遗传算法(Genetic Algorithms,GA)是一种模拟自然中生物的遗传、进化以适应环境的智能算法。由于其算法流程简单,参数较少优化速度较快,效果较好,在图像处理、函数优化、信号处理、模式识别等领域有着广泛的应用。…