Vue-router原理实现

1 .在每一次router的时候查看history的变化情况,验证发现,既有hash的变化,而且也可以使用history的api操作,而且也探测到了相关的变化。
2 .

hash实现

1 .检测a标签的hash实现--<a href="#1">1</a>
2 .明明只定义来了一个类,怎么还会有类似的栈的结构出现。查看一波数据结构的实现。好像是个链式结构,这是第二种思路

history实现

2 .

关键api

1 .this.$router访问当前的router
2 .在进行hover事件表现层的时候,尽量不要使用border事件,这样会重新进行布局,发生页面抖动。就是表现层可以发生替换,最好不要出现从无到有的东西
3 .

history实现

1 .window.history属性指向History对象,他表示当前窗口的浏览历史。
2 .由于安全原因,浏览器不允许脚本读取到这些地址,但是允许在地址之间导航。
3 .浏览器工具栏的“前进”和“后退”按钮,其实就是对history对象进行操作。
4 .移动到之前访问过的页面,通常是从浏览器缓存之中加载的,而不是重新要求服务器发送新的网页。而且直接输入地址的时候也是这样,不会触发页面更新,那么也不会发送http请求。
5 .导致的问题:如果直接输入url的话,后端没有对相应的url做处理,那么会得到404,但是hash路由可以直接输入定位到某个视图。

属性

1 .length:当前窗口访问过的网址数量
2 .state:history堆栈最上层的状态值

方法

1 .back()回到上一个网址
2 .forward()移动到下一个网址
3 .go(n):正数是往前走,负数是往后走
4 .pushState({4.1},'4.2','index.html') :用于popstate事件,该事件触发的时候,该对象会传入回调函数。浏览器会将这个对象序列化之后保留在本地,重新载入这个页面的时候,可以拿到这个对象,如果不需要这个对象,可以填null。4.2:页面的标题,所有浏览器都会忽略这个参数,所以这里可以填空字符串
5 .pushState不会触发页面刷新,只是会导致history对象发生变化,地址栏会有变化
6 .pushState是不能插入跨域网址的。
7 .replaceState():用该修改当前history对象的当前记录。

事件

1 .popstate事件:每当一个文档的浏览历史出现变化的时候,就会触发这个事件
2 .调用pushState()或者replaceState()方法都不会触发该事件,只有用户点击浏览器器按钮或者前进按钮,或者使用back,go,forward方法才会触发
3 .这个事件只针对同一个文档,如果浏览器历史的切换,导致加载不同的文档,这个事件也不会触发。
4 .window.addEventListener('popstate',(event)=>{conso.log(event)}):这个用法就相当于检测onhashchange那个的意思了。

this.$router

1 .VueRouter势力,导航到不同的URL,就需要这个

this.$route

2 .this.router的一个属性currentRoute就是this.route
1 .当前router跳转对象里面可以获取name,path,query,params

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 4,225评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,955评论 25 709
  • 你是什么时候开始输不起的? 你是什么时候太把自己当回事儿的? 这是我最近经常问自己的一句话。 one. 大二上学期...
    A_Lis阅读 2,750评论 0 0
  • 离开家乡,告别父母,来到另一座城市,虽然已经在这里生活了一年,但是还是很陌生 ,陌生的地方,陌生的面孔,就...
    bullet666阅读 3,126评论 0 0
  • 俗话说“民以食为天”、“人是铁,饭是钢,一顿不吃饿得慌”,然而一到夏季大部分人 便没了食欲,所以夏天食物要以清补、...
    王公子说阅读 3,184评论 0 0

友情链接更多精彩内容