前端路由实现方式

文章介绍了HTML5history对象在实现前端路由中的作用,尤其是pushState和replaceState方法,以及hash模式下如何利用hashchange事件监听URL变化来切换页面内容,实现无刷新的前端路由管理。
摘要由CSDN通过智能技术生成
  1. history模式

  1. hash模式

history路由模式的实现,是要归功于HTML5提供的一个history全局对象,可以将它理解为其中包含了关于我们访问网页(历史会话)的一些信息。同时它还暴露了一些有用的方法,比如:

  • window.history.go 可以跳转到浏览器会话历史中的指定的某一个记录页

  • window.history.forward 指向浏览器会话历史中的下一页,跟浏览器的前进按钮相同

  • window.history.back 返回浏览器会话历史中的上一页,跟浏览器的回退按钮功能相同

  • window.history.pushState 可以将给定的数据压入到浏览器会话历史栈中

  • window.history.replaceState 将当前的会话页面的url替换成指定的数据

而history路由的实现,主要就是依靠于pushState与replaceState实现的,这里我们先总结下它们的一些特点。

都会改变当前页面显示的url,但是都不会刷新页面

hash模式:

我们都知道一个URL是由很多部分组成,包括协议、域名、路径、query、hash等,比如上面的例子,我们点击不同模块的时候可能看到是这样的URL

#号后面的,就是一个URL中关于hash的组成部分,可以看到,不同路由对应的hash是不一样的,但是它们都是在访问同一个静态资源index.html。我们要做的,就是如何能够监听到URL中关于hash部分发生的变化,从而做出对应的改变。

其实浏览器已经暴露给我们一个现成的方法hashchange,在hash改变的时候,触发该事件。有了监听事件,且改变hash页面并不刷新,这样我们就可以在监听事件的回调函数中,执行我们展示和隐藏不同UI显示的功能,从而实现前端路由。

作者:麻不烧

链接:https://juejin.cn/post/7127143415879303204

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值