在单页应用中,如何优雅的监听url的变化

2023-10-29


  单页应用的原理从早起的根据url的hash变化,到根据H5的history的变化,实现无刷新条件下的页面重新渲染。那么在单页应用中是如何监听url的变化呢,本文将总结一下,如何在单页页面中优雅的监听url的变化。

  • 单页应用原理
  • 监听url中的hash变化
  • 监听通过history来改变url的事件
  • replaceState和pushState行为的监听

原文在我的博客中:https://github.com/forthealllight/blog/issues/37

欢迎star

一、单页应用原理

  单页应用的原理,在我们的上一篇文章中React-Router源码阅读已经讲的很详细,这里做一个简单介绍。单页应用使得页面可以在无刷新的条件下重新渲染,通过hash或者html5 Bom对象中的history可以做到改变url,但是不刷新页面。

(1)通过hash来实现单页路由

  早期的前端路由是通过hash来实现的:

  改变url的hash值是不会刷新页面的。

  因此可以通过hash来实现前端路由,从而实现无刷新的效果。hash属性位于location对象中,在当前页面中,可以通过:

window.location.hash='edit'

来实现改变当前url的hash值。执行上述的hash赋值后,页面的url发生改变。

赋值前:http://localhost:3000
赋值后:http://localhost:3000/#edit

在url中多了以#结尾的hash值,但是赋值前后虽然页面的hash值改变导致页面完整的url发生了改变࿰

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单页应用中,如何优雅的监听url的变化 的相关文章

随机推荐

  • 什么是DNS欺骗和ARP欺骗?有何区别?

    欺骗攻击是黑客比较常用的一种攻击方式 也是一种隐蔽性较高的网络攻击方式 目前欺骗攻击的主要方式有 IP欺骗 ARP欺骗 DNS欺骗 Web欺骗 电子邮件欺骗等 那么DNS欺骗和ARP欺骗的区别是什么 具体请看下文 DNS欺骗 DNS欺骗是一
  • DIY党的福利!鹅厂程序员教你200元以内制作专属分体键盘

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由VellHe发表于云 社区专栏 前言 作为一名程序员 键盘在手 天下我有啊 不整把高大上的键盘怎么提升B格 之前一直想买个机械键盘 听说机械键盘敲代码和玩游戏都特别爽 也是装B
  • 一款linux系统下的串口调试工具 - COMTransmit

    最近在调试linux下的串口的时候找到了一款好用且功能齐全的串口调试工具 跟大家分享一下 COMTransmit的安装 安装包下载地址 64位 链接 https pan baidu com s 1rxGhMtXYNApjhXquPtiW0w
  • 实时监听nacos中的服务上下线

    1 背景 在使用spring cloud gateway时 服务的上下线可能会没那么及时 这样就会导致在进行业务服重启时会出现部分用户请求接口出现503 服务不可用的情况 nacos client版本 1 4 1 spring cloud
  • msvcp120.dll丢失的解决方法(亲测可修复方的法)

    在运行某些软件的时候 计算机提示msvcp120 dll丢失 无法打开运行软件 在第一次遇到这个问题的时候 相信很多人都不知道是怎么回事 下面小编把msvcp120 dll是什么以及如何解决这个问题的详细方法给大家科普一下 问题描述 在使用
  • linux虚拟机安装完毕之后,ifconfig命令提示command not found

    用虚拟机安装了centos 然后参考链接 https blog csdn net qiruibbb article details 80804121 重新设置了网卡的配置 使虚拟机的系统可以正常上网之后 习惯性的敲了ifconfig 结果提
  • C/C++ 实现时间戳和时间结构体的相互转换、格林威治与本地时间的转换

    C C 实现时间戳和时间结构体的相互转换 格林威治与本地时间的转换 时间是具有周期性的 每间隔四年为一个闰年 时间戳是以1970 1 1 00 00 00开始到当前时间的秒数 查看日历你会发现 1970年为平年 1971年为平年 1972年
  • 虚幻引擎4控制台变量和命令

    虚幻引擎4控制台变量和命令 原文链接 https digilander libero it ZioYuri78 名称 帮帮我 r AccelPredrawBatchTime 当显示加载屏幕或类似的时候覆盖r PredrawBatchTime
  • Python 面试题2023

    原本链接 点击查看 https chat openai com share a4ffcfdc a939 4d9e 84b4 5d5145d6d193 chatgpt site xiaoi ai Python 面试八股 python面试八股
  • 计算机竞赛 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

    文章目录 1 前言 1 课题背景 2 GAN 生成对抗网络 2 1 简介 2 2 基本原理 3 DeOldify 框架 4 First Order Motion Model 5 最后 1 前言 优质竞赛项目系列 今天要分享的是 基于生成对抗
  • avue实现用户本地保存自定义配置字段属性及注意事项(基于tj-vue2-tools)

    avue实现用户本地保存自定义配置字段属性及注意事项 基于tj vue2 tools tj vue2 tools项目地址 https www npmjs com package tj vue2 tools 文档请看项目官方 依赖js bas
  • (python)实现用CPM算法划分社区(两种代码)

    CPM理论讲解 cpm算法学习笔记 蓝砂石的博客 CSDN博客 cpm算法 1 自己实现的代码将社区分为9个 有部分节点未分配社区 自己实现派系过滤算法 import numpy as np import networkx as nx fr
  • 人生若只如初见服务器维护,「北京服务器」人生若只如初见

    文 醉 琴弦 某媒体的编辑约我参与RO2的工作团队 最初并未欣然应允 RO是我第一个网游 亦是伴随我长大 见证我每个不同的人生阶段的载体 投入的感情也不言而喻 并不确定将来还能拿出多少热情投入到另个游戏中 所以迟迟没有答复 阴雨 连绵不绝
  • odoo动态隐藏表单的编辑按钮

    最近在做项目的时候遇到一个问题 其实之前也有遇到 就是说客户要求当一条记录的状态发生变化时 在指定状态的记录不可编辑 之前遇到这个问题是 所做的处理是保存的校验记录的状态 通过raise error的方式去阻止用户保存编辑 这种事后的处理客
  • 可复制的领导力前两章总结

    如何布置任务 1 布置任务和结果 2 复数任何和结果 3 了解任务的目的和背景 4 处理任务过程中会遇到什么意外 遇到意外如何处理 A情况需要汇报 B情况需要自己做决定 5 如果为了达到这个目的和完成任务由什么好的想法和建议吗 示例 给华为
  • cvat for images 1.1 xml文件处理

    xml文件实例 处理代码如下 import xml etree ElementTree as ET import numpy as np import json import math from collections import Cou
  • Linux基础知识总结

    1 ls 显示隐藏文件 ls a 隐藏文件都是以 开头的 回到home目录 ls 通配符 单独的通配符不能识别 必须结合其他字母 1 代表0个或多个任意字符 如只罗列后缀是 cpp的文件 2 只代表单个字符 如罗列前缀有4个字母后缀为 h的
  • EAI Siebel Adapter - Query Page

    IO Account IO 新建workflow 输入参数 PageSize 查询返回几条记录 StartRowNum 从0开始 向后递增 如果用来选择页数的话 StartRowNum PageSize PageNum 1 PageNum从
  • 论美妙的共鸣

    我来提供几个简单实用的思路吧 如果你想和别人有的聊 最为有效的一个解决方法大概是 分析自己知道什么 去发现对方知道什么 暗自合计一下 你们共同知道的是什么 01 比如 你发现对方和你都对动漫感兴趣 你们家是一个地方的 你们都喜欢打游戏 你们
  • 在单页应用中,如何优雅的监听url的变化

    单页应用的原理从早起的根据url的hash变化 到根据H5的history的变化 实现无刷新条件下的页面重新渲染 那么在单页应用中是如何监听url的变化呢 本文将总结一下 如何在单页页面中优雅的监听url的变化 单页应用原理 监听url中的