首页 > 其他分享 >JS面试题:hash和history的区别

JS面试题:hash和history的区别

时间:2024-06-04 10:31:10浏览次数:28  
标签:面试题 hash URL 路径 模式 重写 history

一、hash 模式和 history 模式的介绍

由于 Vue 项目为单页面应用,所以整个项目在开发和构建过程中,仅存在一个HTML物理文件。通过路由系统可以实现将项目的组件与可访问的URL路径进行绑定。由于Vue项目只有一个HTML物理文件,切换页面时既需要让访问的URL路径发生变化,又不能触发 HTML 物理文件的重新加载,这就使得 VueRouter 的跳页模式不能使用普通的超链接方式。
VueRouter 为了支持单页面应用的页面管理和页面跳转,提供了两种页面的跳转和加载模式:

二、hash 模式

hash 模式使用了锚点技术重写URL访问路径,会在原有的URL路径后拼接/#/xxx,这种方式可以在不重新加载原有HTML文件的基础上,实现切换URL,路径的目的。hash 模式的原理实现案例,代码如下:

重新加载的情况下切换 URL路径,配合 onhashchange()可以实现,一旦 URL 中的 hash 部分发生变化,就触发函数通知,通过 JavaScript编程便可以很快速的实现 DOM 对象的切换展示。hash 模式同时也存在不足之处,如在分布式微前端项目中,嵌套的子应用和主应用都使用用 hash 模式时,由于bash 模式的 URL路径只能存在一个#,会导致子应用和主应用在定义URL路径上存在困难。hash 模式的URL路径中包含#,也会在视觉上导致URL路径不美观。

三、history 模式


history 模式是 VueRouter 中常用的一种路由模式,它与 hash 模式不同,不需要借助锚点技术重写URL路径,所以history模式使用的URL路径中不存在#,在视觉上更加美观。history 模式采用 history 对象中的pushState()函数重写URL路径,可在触发重新加载的情况下变更 URL路径,history 模式的原理,代码如下:

history 模式重写 URL路径的解决方案与 hash 模式现象类似但本质不同,虽然 history模式可以重写URL路径,但是重写后的新路径中并不包含原有HTML物理文件的访问地址,所以 history 模式在重写 URL 路径后,一旦刷新网页会造成 404无法访问的效果。VueCL在开发环境中解决了 history 模式的刷新问题,不过项目发布到生产环境时,由于 history 模式的 URL路径问题,还需要配合生产服务器的转发规则重写,用以支持 history 模式的路由

四、区别

1. 是否带”#“号,hash 就是指 url 后面的 # 号以及后面的字符,history没有带#,外观上比hash 模式好看些
2. 原理的区别(看上面)
3. 兼容性:hash 能兼容到IE8, history 只能兼容到 IE10;
4. 请求:由于 hash 值变化不会导致浏览器向服务器发出请求,而且 hash 改变会触发 hashchange 事件(hashchange只能改变 # 后面的url片段);虽然hash路径出现在URL中,但是不会出现在HTTP请求中,对后端完全没有影响,因此改变hash值不会重新加载页面,基本都是使用 hash 来实现前端路由的。history前进后退不会导致浏览器向服务器发送请求,但是服务器没有配置,刷新会导致404

标签:面试题,hash,URL,路径,模式,重写,history
From: https://blog.csdn.net/g841805/article/details/139412981

相关文章

  • Hbase 面试题(六)
    1.简述下HBASE中Split机制?HBase中的Split机制是指将现有的HBase表的Region进行分割的过程。这个过程是HBase自动管理Region的一部分,目的是为了在数据量增长时保持系统的可扩展性和性能。以下是Split机制的关键点:Region定义:在HBase中,表的数据按行键范围分割成多个Regio......
  • Hbase 面试题(五)
    1.简述什么是WAL(WriteAheadLog)预写日志?WAL(WriteAheadLog),即预写日志,是HBase中用于保证数据持久性和一致性的关键机制。以下是WAL的简要概述:目的:WAL的主要目的是在数据实际写入到MemStore之前,先将其记录到一个日志中。这样即使在系统崩溃或故障的情况下,也能够从日......
  • ShardingSphere面试题及参考答案(3万字长文)
    目录什么是ShardingSphere?ShardingSphere的主要组件有哪些?ShardingSphere支持哪些数据库?......
  • 持续总结中!2024年面试必问 20 道 Kafka面试题(三)
    上一篇地址:持续总结中!2024年面试必问20道Kafka面试题(二)-CSDN博客五、Kafka的ISR(In-SyncReplica)是什么?Kafka的ISR(In-SyncReplicas)是Kafka中用于维护数据一致性和高可用性的关键概念之一。ISR列表包含了一个领导者副本(Leader)和与之保持完全同步的追随者副本(Follower......
  • 程序分享--常见算法/编程面试题:删除有序数组中的重复项 II
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。或关注博主免费专栏【程序......
  • 赶紧收藏!2024 年最常见 20道 Kafka面试题(二)
    上一篇地址:赶紧收藏!2024年最常见20道Kafka面试题(一)-CSDN博客三、Kafka的设计架构是什么?Kafka的设计架构是分布式和可扩展的,旨在处理高吞吐量的数据流。以下是Kafka设计架构的关键组成部分及其功能:Producer(生产者):生产者是向Kafka集群发送消息的客户端。它们负责创建消息......
  • Java面试题:解释一下Java中的synchronized关键字,它是如何保证线程安全的?
    在Java中,synchronized关键字是一种同步锁机制,用于确保多个线程在访问共享资源时能够保持线程安全。线程安全是指在多线程环境下,当多个线程尝试同时访问共享资源时,任何时刻最多只有一个线程能够执行特定的代码段。synchronized关键字可以用于以下几个方面:方法同步:当synch......
  • 导入ZIP压缩包比较图片的hash值重复
    项目中碰到需要在导入过程中和当前目录中的图片进行比较,判断是否存在相同的图片,相同则把导入的图片删除掉该内容较多:需要仔细分析每部分代码,结合你需要内容获取对应代码!!!!!!!!首先把工具类导入进来:对应hash比较工具类我是参考该作者博客:java通过哈希比较图片相似度_jav......
  • 《Java开发及前端最全面试题-Offer直通车》目录
    Java开发是需求最广,工资高的细分领域,同时也是会的人最多,有的公司招1个Java开发,要面试几十甚至上百面试者,同时要求很高,要求通晓技术栈很多及很深深度。如果你正准备面试,想要脱颖而出,那么《Java开发及前端最全面试题-Offer直通车》是你的不二选择。本书汇集了多篇超过1万字的精......
  • 【手撕面试题】Vue(高频知识点三)
            每天10道题,100天后,搞定所有前端面试的高频知识点,加油!!!在看文章的同时,希望不要直接看答案,先思考一下自己会不会,如果会,自己的答案是什么?想过之后再与答案比对,是不是会更好一点,当然如果你有比我更好的答案,欢迎评论区留言,一起探讨技术之美。目录面试官:请简述一下v......