history和hash两种路由

知识点:
1.为什么使用路由
2、路由实现的三个功能
3、hash路由
4、history模式

1、为什么要使用路由

现在很多网页使用的是ajax异步请求完成页面的局部刷新(URL不变),
从而提升了用户的体验,同时带来的问题就是用户下次使用URL的时候无法呈现之前ajax的异步内容,
路由提供的是浏览器地址的变化
两者结合起来就能提升了用户体验的同时改变了URL地址。同时减少了http请求

2、路由实现的功能

1、在使用ajax局部刷新页面后,记录当前状态页面的URL并保存
2、可以使用浏览器的前进后退功能,(点击前)前进后退也能回到之前ajax更新的状态
3.改变URL且不让浏览器向服务器发出请求
4、检测URL的变化
5、监测当前URL地址后,解析出需要的信息匹配路由规则

介绍完上面的内容之后,就来了解今天的主题,两种路由模式:
hash模式:监听浏览器地址hash值的变化,执行相应的js切换网页
history模式:利用history API 实现URL地址的变化,从而改变网页的内容

3、hash模式

使用window.location .hash 属性及窗口的onhashchange事件,实现监听浏览器地址hash值变化,执行相应的js切换网页

几个要点:
1、#后字符是hash,也叫扩散列值 hash称作锚点,用来做页面跳转的,使对应的元素出现在视口内
2.hash在页面内跳转,不会随请求发送到服务器端,所以改变hash值,不重新加载页面
3.location.hash值的变化会直接反应到浏览器地址栏上
4、监听window的hsahchange事件,hash值改变是,可以通过location。hash来获取和设置hash值

触发情况:
1、浏览器中的hash值变化会触发
2、在html中a链接设置锚点

4、history模式

1、字面意思理解:当前窗口的浏览历史
2、history对象保存当前窗口访问过的所有页面网址。history.length可查询和访问之前的网址
3、浏览器的前进和后退按钮可以对history值操作

history的两个属性:
history.length:当前窗口访问过的网址数量(包括当前网页)
history.state:当前窗口的状态值。默认为undefind

history方法:
三种:
history.back() :移动到上一个网址
history forward():移动到下一个网址
history.go()默认参数为0,指定参数调转到网页,以当前网页为基准,负数是往前,正数是往后、
注:访问之前网页的时候,从浏览器缓存中加载不需要请求服务器。

history.pushsate(object,title url)
历史中添加记录,不会触发页面的局部刷新,是地址栏的history发生变化,
object:对象,传递到新页面中的对象,默认null
title:标题,默认空,浏览器不支持。
url:新网址,必须处于同一个域内,否则会报错。不指定为当前页面
history.replacestate()修改当前的history记录

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十九万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值