博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue路由的实现原理
阅读量:5300 次
发布时间:2019-06-14

本文共 1580 字,大约阅读时间需要 5 分钟。

一、mode

  • 利用URL中的hash(“#”)
  • 利用History interface在 HTML5中新增的方法

二、hash(默认)==>hashHistory

1、hashHistory.push

将新路由添加到浏览器访问历史的栈顶

2、hashHistory.replace

替换掉当前的路由

3、hashchange

function random () {        var num = parseInt(Math.random() * 100)        document.getElementById('num').innerHTML = num        window.location.hash = "num=" + num    }    random();    window.addEventListener('hashchange', function (e) {        var str = e.newURL.split('#')[1]        document.getElementById('num').innerHTML = str.split('=')[1]    })复制代码

三、history(vue-cli3会让你选择是否默认history)==>History interface

难道history才是主流吗?对我而言,只是因为hash太丑了!!!

  • History.back():前往上一页,等价于history.go(-1)
  • History.forward():前往下一页,等价于history.go(1)
  • History.go():通过当前页面的相对位置从浏览器历史记录(会话记录)加载页面。

参数为-1的时候为上一页,参数为1的时候为下一页。当整数参数超出界限时,例如:如果当前页为第一页,前面已经没有页面了,我传参的值为-1,那么这个方法没有任何效果也不会报错。调用没有参数的go()方法或者不是整数的参数时也没有效果

从HTML5开始,History interface有进一步修炼:pushState(),replaceState()不仅是读取了,还可以对浏览器历史记录栈进行修改。

1、 history.pushState(state,title,URL)

向浏览器新增一条历史记录,但是不会刷新当前页面(不会重载),其中state为对象,可以用作携带信息用,title:目前来看没啥用一般为空或null,URL:即要更改页面的URL,且必须同源,不能跨域;

2、 history.replaceState(state,title,URL)

更改当前浏览器的历史记录,即把当前执行此代码页面的记录给替换掉,参数与pushState相同

3、popstate(前进后退时调用)

function random () {        var num = parseInt(Math.random() * 100)        document.getElementById('num').innerHTML = num        window.history.pushState({num: num},'', num);    }    random();    window.addEventListener('popstate', function (e) {        console.log('active')        document.getElementById('num').innerHTML = e.state.num    })复制代码

转载于:https://juejin.im/post/5d11aa79f265da1b971a81ad

你可能感兴趣的文章
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
FUSE-用户空间文件系统
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>