h5、webview、App中的history

本文探讨了前端路由的历史,从传统的服务端路由到单页应用(SPA)中的前端路由。详细介绍了基于hash的前端路由实现,以及HTML5 History API的pushState和replaceState方法,阐述了它们如何在不刷新页面的情况下改变URL并管理浏览器历史记录。同时,文章还列举了使用history对象时可能遇到的问题,如history.length的限制和浏览器对历史记录栈的存储限制。
摘要由CSDN通过智能技术生成
一、路由历史

传统的服务端路由,是根据客户端请求的不同地址,返回不同的网页内容。SPA之后,在url地址改变的过程中,通过js来实现不同UI之间的切换,也就是用js对DOM的操作。其中,根据url地址栏的变化二展示不同的UI,就属于前端路由。

二、前端路由

1. 基于hash
在HTML5的history API出现之前,前端路由主要是通过hash来实现的,hash能兼容低版本的浏览器。
location.hash是url中#之后的内容,与hash密切相关的是hashChange事件,在hash变化的时候会触发。hash要满足以下条件:
(1)url中hash值的变化不会重新加载页面,hash是用来指导浏览器行为的,对服务端是无用的,所以不会包括在http请求中;
(2)hash值的变化,都会在浏览器的访问历史中增加一个记录,也就是能通过浏览器的回退、前进按钮控制hash的切换;
(3)可以用欧hashchange事件,监听到hash值的变化,从而响应不同路径的逻辑处理。

window.addEventListener('hashchange', fuction, false);

我们可以在hashchange事件里,根据hash值来更新对应的视图,但不会去重新请求页面,同事在history中增加一条访问记录,用户仍然可以通过前进后退键实现UI的切换。
改变hash有两种方式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值