vue的history模式与哈希模式原理
hash模式
<!--
 * @Author: dezhao.zhao@hand-china.com
 * @Date: 2021-10-26 17:52:25
 * @Description:
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Hash模式</title>
  </head>
  <body>
    <a href="#/home">home</a>
    <a href="#/about">about</a>
    <div id="content">default</div>
    <script>
      window.addEventListener('hashchange', () => {
        const content = document.getElementById('content')
        // 路径匹配显示
        window.location.hash === '#/home'
          ? (content.innerHTML = 'home')
          : (content.innerHTML = 'about')
      })
    </script>
  </body>
</html>
history模式
<!--
 * @Author: dezhao.zhao@hand-china.com
 * @Date: 2021-10-26 18:01:35
 * @Description:
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>history</title>
  </head>
  <body>
    <a href="/home">home</a>
    <a href="/about">about</a>
    <div id="content">default</div>
    <script>
      const content = document.getElementById('content')
      const aEls = document.getElementsByTagName('a')
      ;[...aEls].forEach((item) => {
        item.addEventListener('click', (e) => {
          // 阻止默认跳转时间
          e.preventDefault()
          const href = item.getAttribute('href')
          // 修改url
          history.pushState({}, '', href)
          // 也可以使用replaceState,但其不可以进行回退
          // 修改显示内容
          content.innerHTML = href
        })
      })
    </script>
  </body>
</html>
- 采用链接的默认跳转,会使浏览器按照新的url,再次向服务器请求资源,而服务器下,并没有该资源,导致404错误,通过history对象操作url不会使浏览器再次向服务器请求资源
- 并且history需要在服务器环境下才可以使用,不然会报错,可以通过vscode中liveserver插件搭建一个本地服务
  
vue的history模式与哈希模式原理的更多相关文章
- 在nginx上部署vue项目(history模式);
		在nginx上部署vue项目(history模式): vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载.但是如果我们不想has ... 
- 在nginx上部署vue项目(history模式)--demo实列;
		在很早之前,我写了一篇 关于 在nginx上部署vue项目(history模式) 但是讲的都是理论,所以今天做个demo来实战下.有必要让大家更好的理解,我发现搜索这类似的问题还是挺多的,因此在写一篇 ... 
- Laravel+vue实现history模式URL可行方案
		项目:laravel + vue 实现前后端分离.vue-router 默认 hash 模式 -- 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. h ... 
- Vue项目history模式下微信分享总结
		原文 : http://justyeh.top/post/39/ 2019-07-02 Vue微信分享 每回遇到微信分享都是一个坑,目前的商城项目使用Vue开发,采用history的路由模式,配置微信 ... 
- K8s nginx-ingress 如何配置二级目录转发远程静态服务器基于Vue路由history模式打包的应用程序
		背景 首先这标题有点绕,我先解释下: 首先我们有静态服务器,上面某个目录有Vue路由history模式打包的应用程序(也就是build后的产物): 但是静态服务器一般不做对外域名用的,我们需要在k8s ... 
- vue打包---放到服务器下(一个服务器多个项目需要配置路径),以及哈希模式和历史模式的不同配置方法
		哈希模式,好用,不需要服务器配合分配路径指向,自己单机就可以打开了 接下来上代码截图 接下来开始截图 历史模式 历史模式需要后端支持 打包后自己直接点击是打不开的 截图如下 
- Vue路由History模式分析
		Vue路由History模式分析 Vue-router是Vue的核心组件,主要是作为Vue的路由管理器,Vue-router默认hash模式,通过引入Vue-router对象模块时配置mode属性可以 ... 
- 轻松掌握:JavaScript代理模式、中介者模式
		代理模式.中介者模式 代理模式 在面向对象设计中,有一个单一职责原则,指就一个类(对象.函数)而言,应该仅有一个引起它变化的原因.如果一个对象承担了过多的职责,就意味着它将变得巨大,引起它变化的原因就 ... 
- MVC+EF 理解和实现仓储模式和工作单元模式
		MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generi ... 
- MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)
		MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与 ... 
随机推荐
- MySql注入—DNS注入
			MySql注入-DNS注入 1.DNS注入原理 一.DNS注入原理 DNS注入,是通过查询相应DNS解析产生的记录日志来获取想要的数据 对于sql盲注这样的方法常常用到二分法,非常麻烦而且没有回显,要 ... 
- Hibernate之Criteria
			1,Criteria Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供了 Criteria和DetachedCriteria . ... 
- Miracast技术详解(二):RTSP协议
			目录 RTSP概述 抓包准备 WFD能力协商(Capability Negotiation) RTSP M1 Messages RTSP M2 Messages RTSP M3 Messages RT ... 
- 5G+云渲染:如何快速推进XR和元宇宙实现?
			XR(扩展现实)领域正在以惊人的速度增长.目前,到 2024 年,一些专家表示这个行业的价值将达到 3000 亿美元. 这个行业发展如此迅速的部分原因是 XR 将在商业环境中的带来巨大利益.近年来,很 ... 
- 风场可视化学习笔记:openlayers
			最近在弄地图控件方面的东西,这里分享一个我找到的一个添加风场的教程和demo,需要对大家有所帮助(以下为转载内容)载于https://blog.csdn.net/u010065726/article/ ... 
- 记录--用JS轻松实现一个录音、录像、录屏的工具库
			这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 最近项目遇到一个要在网页上录音的需求,在一波搜索后,发现了 react-media-recorder 这个库.今天就跟大家一起研究一 ... 
- Python glob库的用法
			一.匹配指定文件夹下的所有文件 files = glob.glob("C:\\Users\\liuchunlin2\\Desktop\\测试数据\\*") print(files) ... 
- 使用 Kotlin DSL 编写网络爬虫
			本博文将会通过一个网络爬虫的例子,向你介绍 Kotlin 的基本用法和其简洁有力的 DSL. 关于DSL 按照维基百科的说法,DSL(domain-specific language) 是一种专注于某 ... 
- #线性筛,哈希#CF1225D Power Products
			题目 给定一个长度为 \(n\) 的正整数序列 \(a\),问有多少对 \((i,j),i<j\) 使得存在一个整数 \(x\) 满足 \(a_i\times a_j=x^k\) 分析 将 \( ... 
- #基数排序#CF1654F Minimal String Xoration
			题目传送门 分析 有没有一种办法可以将每个 \(j\) 的比较过程同时进行, 可以发现其实这个过程很像后缀排序,实际上只是加号变成了异或, 从低位到高位重新将字符串排名,用同样的方法做到 \(O(2^ ... 
