前端路由实现(history)

Posted rxqlx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端路由实现(history)相关的知识,希望对你有一定的参考价值。

HTML5 history 新增了两个 API:history.pushState 和 history.replaceState

两个 API 都接收三个参数:

1.状态对象(state object):一个 javascript对象,与用 pushstate()方法创建的新历史记录条目关联。无论何时用户导航到新创建的状态,popstate事件都会被触发,并且事件对象的state属性都包含历史记录条目的状态对象的拷贝。

2.标题(title):FireFox浏览器目前会忽略该参数,虽然以后可能会用上。考虑到未来可能会对该方法进行修改,传一个空字符串会比较安全。或者,你也可以传入一个简短的标题,标明将要进入的状态。

3.地址(URL):新的历史记录条目的地址。浏览器不会再调用 pushState() 方法后加载该地址,但之后,可能会试图加载,例如用户重启浏览器。新的URL不一定是绝对路径;如果是相对路径,它将以当前的URL为基准;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常。该参数是可选的;不指定的话则为文档当前URL。

相同之处是两个API都会操作浏览器的历史记录,而不会引起页面的刷新。

不同之处在于pushState会增加一条新的历史记录,而replaceState则会替换当前的历史记录。

以上是关于前端路由实现(history)的主要内容,如果未能解决你的问题,请参考以下文章

前端路由的实现 —— History的pushState和replaceState用法

使用hash和history实现前端历史状态切换,触发事件驱动函数来完成部分数据的加载(使用hash和history实现前端路由切换,含完整源码+注释)

vue路由原理

Vue-两种路由模式 hash 和 history

浅谈前端路由原理hash和history

浅谈前端路由原理hash和history