hash路由模式

news2024/10/6 13:29:46

hash模式


hash模式是一种把前端路由的路径用井号 # 拼接在浏览器 URL 后面的模式。

一个完整的 URL 包括:协议、域名、端口、虚拟目录、文件名、参数、锚。

https://www.wangyuegyq.top/utils/index.html?name=123&phone=123#home
  • 协议:https
  • 域名:www.wangyuegyq.top
  • 端口号:443,https默认端口号是443,http默认端口号是80,默认端口号可以不写
  • 虚拟目录:/utils
  • 文件名:index.html
  • 参数:name=123&phone=123
  • 锚部分:home(#后面的值)

hash作用


  1. 路由

    hash值的变化,会触发hashchange事件,这样我们就可以通过监听hashchanges事件来根据不同的hash值去渲染不同的UI,以实现路由切换的目的。

    更改路由方式:

    (1)a标签

    (2)location.hash、location.href

    (3)浏览器前进后退按键或者history.back、history.go、history.forward

    (4)history.pushState、history.replaceState(H5 history 新特性)

    <div>
      <a href="#home">首页</a>
      <a href="#article">文章</a>
      <div id="content"></div>
    </div>
    <script>
      window.onhashchange = (event) => {
        const hash = window.location.hash;
        const content = document.getElementById('content');
        if (hash === '#home') {
          content.innerHTML = '首页'; 
        } else if (hash === '#article') {
          content.innerHTML = '文章'; 
        }
      }
    </script>
    
  2. 定位

    hash也称作锚点,DOM id 结合,可以用于页面定位。

    <div>
    <span id="hash-position">定位点</span>
    <a href="#hash-position">点击定位</a>
    </div>
    

hash特点


  • hash的改变,不会访问服务器,不会刷新页面(hash 值是网页的标志位,HTTP 请求不包含锚部分,不会发送给服务器,对后端无影响)

  • hash的改变,会触发hashchange监听事件

  • hash的改变,会改变浏览器的历史记录

    hash

    这也是为什么当hash的改变(hash的改变会记录在window.hisotry中),不仅仅可以出触发hashchange事件,还会触发popstate事件(监听history对象变化的事件)

注意事项:


1. 如果改变的hash值与当前的hash值一致时,hashchang不会改变,但是popstate事件会执行(location.href更改时,执行,但是location.hash更改时,不会执行,两者执行时,都不会创建一条新的历史记录)。

2. 哪怕新的hash值和当前的hash值相同时,history.pushState方法会创建一条新的历史记录

更多内容,访问:

history
hash
单页面应用和多页面应用
React-Router源码分析-History库
History库源码分析-Action 动作类型
History库源码分析-createLocation
History库源码分析-createPath
History库源码分析-parsePath

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

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

相关文章

3. hdfs概述与高可用原理

简述 HDFS&#xff08;Hadoop Distributed File System&#xff09;是一种Hadoop分布式文件系统&#xff0c;具备高度容错特性&#xff0c;支持高吞吐量数据访问&#xff0c;可以在处理海量数据&#xff08;TB或PB级别以上&#xff09;的同时最大可能的降低成本。 HDFS适用于…

大数据-之LibrA数据库系统告警处理(ALM-12049 网络读吞吐率超过阈值)

告警解释 系统每30秒周期性检测网络读吞吐率&#xff0c;并把实际吞吐率和阈值&#xff08;系统默认阈值80%&#xff09;进行比较&#xff0c;当检测到网络读吞吐率连续多次&#xff08;默认值为5&#xff09;超过阈值时产生该告警。 用户可通过“系统设置 > 阈值配置 >…

迈特优×实在RPA丨每年节省人天800+,企业自动化前后的区别如此大?

迈特优品牌设立于2015年&#xff0c;是一家集设计、生产、销售为一体的新电商企业&#xff0c;旗下拥有天猫、拼多多、唯品会等平台10余家店铺&#xff0c;在天猫男装品类排名前十&#xff0c;男装各个类目均有排名前五的商品&#xff0c;每年开发新品超过1000款。 为优化企业…

基于Vue+SpringBoot的无代码动态表单系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 动态类型模块2.2 动态文件模块2.3 动态字段模块2.4 动态值模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 动态类型表3.2.2 动态文件表3.2.3 动态字段表3.2.4 动态值表 四、系统展示五、核心代码5.1 查询档案类型5.…

μC/OS-II---进程间通信方式

目录 信号量&#xff08; Semaphores &#xff09;- 用于最基本的互斥、同步操作互斥信号量&#xff08;Mutual Exclusion Semaphores &#xff09;-专门用于互斥消息队列&#xff08; Message Queues &#xff09;- 用于消息通信消息邮箱&#xff08;Message Box&#xff09; …

Latex如何消除并自定义算法标识

正常&#xff1a; 修改后&#xff1a; 正常代码&#xff1a; \documentclass{article} \usepackage[ruled]{algorithm2e} \begin{document} \begin{algorithm} \caption{Hi} My name is XXX. \end{algorithm} \end{document}修改后代码&#xff1a; \documentclass{articl…

遥感领域最热门的研究主题介绍

遥感是有效地直接从地球收集数据的最重要技术之一。由于生态信息科学的进步&#xff0c;遥感技术在日常生活的多个研究方面变得非常有价值&#xff0c;其中包括大气物理学、生态学、土壤和水污染、土壤科学、地质学、火山爆发和地球演化。以下是遥感领域的主要趋势研究主题&…

山西电力市场日前价格预测【2023-11-17】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-17&#xff09;山西电力市场全天平均日前电价为156.81元/MWh。其中&#xff0c;最高日前电价为457.16元/MWh&#xff0c;预计出现在18:00。最低日前电价为0.00元/MWh&#xff0c;预计出…

Java远程操作Linux服务器命令

Java可以通过SSH协议远程连接Linux服务器&#xff0c;然后使用JSch库或者Apache Commons Net库来执行远程Linux命令。以下是一个使用JSch库的示例代码&#xff1a; import com.jcraft.jsch.*;public class RemoteCommandExecutor {private String host;private String user;pr…

问题总结(持续更新)

Linux 1.虚拟机问题 打开虚拟机所在目录对 后缀 .vmx文件进行修改 vmcio.present"FALSE" 改为FALSE即可 2.因某些问题导致本来正常的虚拟机没有网络了 重新配置网络 vim /etc/sysconfig/network-scripts/ifcfg-enstab补全 service network restart 重启网络 Sentina…

(C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)

链栈是运算受限的单链表、只能在链表头部进行操作 1.链表的头指针就是栈顶,链头为栈顶&#xff0c;链尾为栈底 2.栈的链式存储不需要附设头节点 3.基本不存在栈满的情况,不需要判断栈满&#xff0c;但要判空 4.空栈相当于头指针指向空 5.插入和删除仅在栈顶处执行 6.因为是动态…

Python实现视频字幕时间轴格式转换

自己喜欢收藏电影&#xff0c;有时网上能找到的中文字幕文件都不满足自己电影版本。在自己下载的压制版电影中已内封非中文srt字幕时&#xff0c;可以选择自己将srt的时间轴转为ass并替换ass中的时间轴。自己在频繁 复制粘贴改格式的时候想起可以用Python代码完成转换这一操作&…

EnlightenGAN 开源代码运行问题汇总

参考链接&#xff1a; EnlightenGAN 开源代码运行EnlightenGAN的运行环境搭建和训练自己的数据 源码下载和环境配置比较简单&#xff0c;本文测试环境&#xff1a;Win10 RTX3060、cuda 11.3、python 3.8 torch 1.12.0 numpy 1.20.1 如果想修改在项目里创建test_daatset文…

Mac电脑好用的窗口管理软件 Magnet 中文for mac

Magnet是一款用于Mac操作系统的窗口管理工具&#xff0c;它可以帮助您快速和方便地组织和管理应用程序窗口&#xff0c;以提高您的工作效率和多任务处理能力。 以下是Magnet的一些主要功能和特点&#xff1a; 窗口自动调整&#xff1a;Magnet允许您通过简单的拖放操作或使用快…

0门槛!用ChatGPT只花1天批量生成300个爆火TikTok视频

目录 1 2让天下没有难做的开发和运维&#xff0c;DevOps终于有了专属大模型 3关于 DevOpsGPT 1 不露脸&#xff0c;不怕视频也能从TikTok赚到钱?在过去30天&#xff0c;有人通过这个方式预计至少获得了超过1万美金的广告分成收益。这些成功账号的共同特点是&#xff0c;所有…

Vue3 自定义hook函数

这个hook函数并不是Vue3 自带的&#xff0c;而是为了方便我们书写和复用代码。 当我们在setup函数中写了很多内容过后&#xff0c;就会变得很乱&#xff0c;所以我们将实现相同功能的数据、方法和生命周期等等打包单独放在一个文件中&#xff0c;就会整洁很多。 例如&#xf…

天津市专业大数据培训班,大数据就业岗位的多样性

大数据技术应用广泛&#xff0c;几乎涉及到了各个行业和领域。毕业后&#xff0c;我们可以选择从事大数据工程师、数据分析师、数据科学家等职业&#xff0c;也可以选择进入金融、医疗、电商等行业进行数据分析和决策支持。 大数据就业岗位多样 大数据培训所涉及的就业岗位有…

原来你不会找资源,三个宝藏白嫖书籍网站,阅读改变生活(一)

[无名图书] - 探索无尽的书海 致力于为你打开一扇通往无限知识和无穷想象的大门。从畅销小说到学术专著&#xff0c;书库涵盖了各个领域&#xff0c;满足了各种阅读胃口。无论你是文学爱好者、学术追求者还是正在寻找新奇刺激的冒险者&#xff0c;这都是你不可错过的阅读伴侣。…

固有时间尺度分解(Intrinsic Time Decomposition,ITD)

代码教程 固有时间尺度分解(ITD) 代码原理 ITD&#xff08;Intrinsic Time Decomposition&#xff09;是一种信号分解方法&#xff0c;用于将信号分解成多个时频组件。它的基本思想是将信号分解为一组原子函数&#xff0c;这些原子函数具有不同的时频特性。 ITD分解的步骤如下…

Python的基础:模块(Modules)和包(Packages)详解

1. 模块&#xff08;Modules&#xff09; 一个模块是一个包含了 Python 定义和语句的文件。模块可以包括变量、函数、类等&#xff0c;并且提供了一种将相关代码组织成可重用单元的方式。一个模块的定义通常包括以下几个方面&#xff1a;   1&#xff09;文件扩展名&#xff…