1.vue路由的两种模式

hash模式:
比如 'http://www.baidu.com/#/abc'  hash 的值为 '#/abc'
它的特点在于:hash 虽然出现 URL 中,但不会被包含在 HTTP 请求中,因此改变 hash 不会重新加载页面
但是会触发 onhashchange 事件,所以我们可以监听,然后渲染自己要渲染的组件,达到路由的效果history模式:
通过 HTML5 中新增的 pushState() replaceState() 方法
应用于浏览器的历史记录,在已有的 go(),back(),forward() 的基础之上,它们提供了对历史记录进行修改的功能
当它们执行修改时,虽然改变了当前的 URL,但你浏览器不会立即向后端发送请求
我们可以通过 onpopstate 事件,监听 history 的变化,然后渲染自己要渲染的组件,达到路由的效果

2.pushState和replaceState的用法

history.pushState(state, title, url)
// 作用:将当前URL和history.state加入到history中,并用新的state和URL替换当前。不会造成页面刷新
// state:与要跳转到的URL对应的状态信息
// title:新页面的标题,但是所有浏览器目前都忽略这个值
// url:要跳转到的URL地址,不能跨域history.replaceState(state, title, url)
// 作用:pushState的区别就在于它不是写入而是替换修改浏览历史中当前纪录,其余和 pushState一模一样

3.实现原理

<div><h2>history</h2><a class="history">home1</a><a class="history">about1</a><h2>hash</h2><a class="hash">home2</a><a class="hash">about2</a>
</div>
window.onload = function(){// history  注册路由document.querySelectorAll('.history').forEach(item => {item.addEventListener('click', e => {e.preventDefault();let link = item.textContent;window.history.pushState({name: 'api'}, '', link);})});// 监听路由,popstate监听history变化,可以使用history.go() history.forward()使history变化,触发事件window.addEventListener('popstate', (e) => {console.log({location: location.href,state: e.state})});// hash  注册路由document.querySelectorAll('.hash').forEach(item => {item.addEventListener('click', e => {e.preventDefault();let link = item.textContent;location.hash = link;}, false)});// 监听路由window.addEventListener('hashchange', () => {console.log({location: location.href,hash: location.hash})}, false)}

vue路由实现原理总结相关推荐

  1. vue 路由知识点梳理及应用场景整理

    最近做项目才发现,我确实对 vue-router 太不熟悉了,都只了解个简单用法就开始搞了,本来很简单的问题,都搞不清楚.现在重新看一遍文档,重新梳理一下. vue 路由的原理 说实话,路由我一直也就 ...

  2. vue页面路由的原理

    47. vue页面路由的原理 1. 原理 Vue 中的路由原理是基于浏览器的 history API 和 Vue 的路由插件 Vue Router 实现的. 具体来说,当浏览器接收到一个新的路由请求时 ...

  3. vue路由传参【vue路由原理、区别】

    vue的路由传值主要通过 query 和 params 来实现 方法1.query query传参就是在url地址后面拼接 ?参数名=参数值 优点:通用性比较好,刷新数据不会丢失 例如 rourer- ...

  4. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  5. Vue的路由实现原理解析(最清晰)

    Vue的路由实现原理解析(最清晰) 一般源码中,都会用到 window.history 和 location.hash history 实现 window.history 对象包含浏览器的历史,win ...

  6. VUE路由的工作原理

    1.vue路由的两种模式 hash模式: 比如 'http://www.baidu.com/#/abc' hash 的值为 '#/abc' 它的特点在于:hash 虽然出现 URL 中,但不会被包含在 ...

  7. vue路由的模式 以及原理 区别

    ⾯试官您好,接下来我给您介绍⼀下 vue 的路由模式,vue 的路由模式⼀共有两种,分别是哈希和 history.他们的区别是 hash 模式不会包含在 http 请求当中,并且 hash 不会重新加 ...

  8. vue路由模式实现原理

    vue路由有两种模式(通过改变 URL,在不重新请求页面的情况下,更新页面视图) 一种hash模式(URL有#) 实现原理: 一种history模式(URL无#) 实现原理: 这两种模式区别看有无#

  9. vue路由守卫死循环及next原理解释

    ​ 在使用vue路由守卫的beforeEach方法时可能会出现无限递归,也就是死循环的问题,根本原因在于next()方法在不合适的地方错误调用所致,先来看一下官方对next()方法的解释: befor ...

最新文章

  1. 哈工大导师禁止实验室硕士出去实习,称「实习就像和35岁渣男试婚」,你怎么看?...
  2. window编程_消息分类
  3. Python常用的模块和简单用法
  4. sql server agent会自动关闭_车用自动灭火器(装置)国内超细干粉自动灭火装置技术对比_搜狐汽车...
  5. 博客刚开通,先转载几篇,请见谅
  6. 利用find同时查找多种类型文件
  7. python随机列表文本_在python中从单词列表返回随机单词
  8. js遍历对象的几种方法
  9. mysql优化了解_了解MySQL如何优化
  10. 手机怎样才能接收到五公里外的WiFi信号?
  11. linux系统给串口权限,让ubuntu串口和USB设备不用root权限访问
  12. 如何在浏览器中显示本地文件系统_如何完全卸载浏览器中的Flash插件
  13. JS/NPAP之间传递数组:NPVARIANT_TO_OBJECT/OBJECT_TO_NPVARIANT
  14. 服务器ghost备份后无法进入系统还原,ghost恢复后,系统不能启动的问题
  15. 企业数字化转型:数字化成熟度评估模型
  16. 【嵌入式开发】STM8S103F3P6单线半双工串口通信
  17. HTML页面转PDF 思路
  18. linux支持ipv6
  19. 第四天(打造离线下载服务器)
  20. Linux查看系统信息命令总结

热门文章

  1. Mac 终端下使用 zcat 报错
  2. nodejs 前端 常用库
  3. Laradock使用
  4. [C语言]利用链表采用分治法进行递归查找不大于10000个数中的最大值
  5. 2021年中国萤石发展现状及进出口状况分析:下游氢氟酸景气助力萤石价格保持高位 [图]
  6. 跨境电商独立站的玩法介绍-扬帆际海
  7. pycharm技巧-win10给pycharm设置全局字符串搜索快捷键
  8. 因为AI,上海正迎来第二代科技公司的创业浪潮
  9. iOS app瘦身优化之路
  10. RH254-第二十六节-iptables和firewalld防火墙