hash路由详解

#号的含义

#号代表网页中的一个位置。右边的字符表示该位置上的标识符

http://www.example.com/index.html#print

这个URL代表的是这个www.example.com域名的这个index.html页面下的print位置。浏览器读取这个URL后,会自动的将print所在的位置滚动到可视区域内。

跳转到页面的定值位置可以使用a标签的name属性(锚点),或者使用id属性

其实也就是#后边的字符不会被发送给服务端

改变#后边的内容也就不会重新发送请求,会发生位置的改变(跳到当前页面的某个位置)

改变#会改变浏览器的历史,会产生一条新的历史记录

window.location.hash读取#的值

onhashchange事件,是html5新增的事件,当#值改变时候,会触发该事件

HashHistory:更新视图但不重新请求页面

实现:

路由变化时候出发updateRoute函数,就是执行里面的cb函数,cb函数是从History.listen(cb)时候传入的,这个对路由的监听函数是对app实例的遍历,给每一项添加_route属性,但是我们知道vue是渐进式的,vue本身不具有关于路由的属性,所以路由的引入是使用的插件,也就是执行路由的install,install就是给vue添加一个mixin混入对象,从而给vue添加路由属性

监听路由的过程

我们在地址栏输入一个url后,通过setuplisteners(这个是 给路由添加hashchange事件的)调用replaceHash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值