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

面试问题: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美观度有要求的项目,需要与后端配合,确保所有路由都有对应的处理。

http://www.kler.cn/a/378267.html

相关文章:

  • 2022 NOIP 题解
  • 使用 Elasticsearch 进行语义搜索
  • 新能源汽车与公共充电桩布局
  • 【Linux】命令行参数 | 环境变量
  • 「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件
  • github - ssh 配置 key、下载repo
  • 正式开源:从 Greenplum 到 Cloudberry 迁移工具 cbcopy 发布
  • Chrome浏览器音/视频无法自动播放
  • 微服务设计模式 - 网关路由模式(Gateway Routing Pattern)
  • dns主从服务器的配置
  • Web 词汇表
  • Linux下安装ActiveMQ-CPP
  • 基于Spring Boot的私房菜定制上门服务系统的设计与实现
  • 【097】基于SpringBoot+Vue实现的个人社区博客管理系统
  • leetcode-5-最长回文子串
  • 在 VS Code 中规范化 Git 提交消息并自动生成 CHANGELOG.md
  • gin中间件
  • [极客大挑战 2019]FinalSQL
  • [ 问题解决篇 ] win11中本地组策略编辑器gpedit.msc打不开(gpedit.msc缺失)
  • kubectl常用命令简介
  • 万字长文详解Hive聚合函数 grouping sets、cube、rollup原理、语法、案例和优化
  • HTML 框架
  • PHP如何处理密码嗅探和重播攻击
  • Django3 + Vue.js 前后端分离书籍添加项目Web开发实战
  • 助力风力发电风机设备智能化巡检,基于YOLOv7全系列【tiny/l/x】参数模型开发构建无人机巡检场景下风机叶片缺陷问题智能化检测预警模型
  • Chrome与夸克的安全性对比