面试问题:hash和history的区别

问:

hash和history的区别

回答:

  1. 工作原理‌:

    • hash模式 ‌:利用锚点技术,通过改变URL中的hash部分(即#后面的部分)来实现页面跳转,不会重新加载页面。例如,URL变为http://www.example.com/#/home时,hash值为#/home。这种模式下,hash值虽然出现在URL中,但不会被包含在HTTP请求中,因此不会对后端产生影响。‌12
    • history模式 ‌:利用HTML5 History API中的pushState()replaceState()方法,通过修改浏览器的历史记录来实现页面跳转。这种模式下,URL看起来更美观,没有#符号。例如,URL可以变为http://www.example.com/home。如果浏览器不支持这些方法,则无法使用history模式。
  2. 刷新页面时的行为‌:

    • hash模式 ‌:在hash模式下,刷新页面时,浏览器会保留当前的hash值,因此不会返回404错误。例如,即使URL变为http://www.example.com/#/home,浏览器也会正常显示页面内容。
    • history模式 ‌:在history模式下,刷新页面时会向服务器发送请求,如果服务器没有对应的路由处理,则会返回404错误。例如,如果URL变为http://www.example.com/home,而服务器没有对应的路由处理,则会返回404错误。
  3. 兼容性‌:

    • hash模式‌:兼容性较好,几乎所有浏览器都支持锚点技术,不需要服务器特别配置。
    • history模式‌:需要HTML5支持的浏览器,不支持IE6-8等老版本浏览器。
  4. 使用场景‌:

    • hash模式‌:适合对兼容性要求较高的项目,或者开发测试阶段使用。‌2
    • history模式‌:适合对URL美观度有要求的项目,需要与后端配合,确保所有路由都有对应的处理。
相关推荐
Cx330❀8 小时前
Git 基础操作通关指南:版本回退、撤销修改与文件删除深度解析
大数据·运维·服务器·git·算法·搜索引擎·面试
前端小白在前进8 小时前
力扣刷题:合并两个有序数组
算法·leetcode·职场和发展
王中阳Go8 小时前
分享一下最近的面试题
面试
CoderYanger8 小时前
第 479 场周赛Q2——3770. 可表示为连续质数和的最大质数
java·数据结构·算法·leetcode·职场和发展
云泽8089 小时前
蓝桥杯算法精讲:前缀和与差分算法的应用与实战
算法·职场和发展·蓝桥杯
草莓熊Lotso9 小时前
哈希表的两种灵魂:深入探索开放定址与链地址法的核心机密
linux·运维·数据结构·c++·人工智能·算法·哈希算法
我命由我123459 小时前
Excel - 在 Excel 中为指定列设置下拉选项
经验分享·学习·职场和发展·编辑器·excel·求职招聘·学习方法
天才测试猿9 小时前
Jmeter命令行压测&生成HTML测试报告
软件测试·测试工具·jmeter·职场和发展·jenkins·测试用例·压力测试
福大大架构师每日一题18 小时前
go-zero v1.9.3 版本更新:一致性哈希负载均衡、gRPC优化、链路追踪修复、ORM完善等重要提升
golang·负载均衡·哈希算法
用户479492835691519 小时前
"讲讲原型链" —— 面试官最爱问的 JavaScript 基础
前端·javascript·面试