单页路由实现方法

刚看的,存储一下

1.单页路由是什么?(这是自己的理解)

单页路由就是只在不需要产生或重新加载新页面的前提下,完成内容的更新

2.实现的方法

1.url完全不动型(页面怎么改变,url就是不变)

工具:ajax方法
ajax的意义就是异步加载,在不需要重载页面的前提下,更新部分内容。

2.带#型

工具:window.hashchange
原理就是用该工具监听#后面参数的变化,执行js代码

3.不带#型

工具:history API(HTML5新东西)
原理:利用监听历史记录点进行路由
需要的函数:
1.history.pushState 是将指定的URL添加到浏览器历史里,存储当前历史记录点API

2.history.replaceState 是将指定的URL替换当前的URL,替换当前历史记录点

注:1与2的不同在于1会在window.history里创建历史记录点,2不会创建

3.history.state 当前URL下对应的状态信息

4.window.onpopstate 监听历史记录点,也就是说监听URL的变化,但会忽略URL的hash部分。

history.go和history.back(包括用户按浏览器历史前进后退按钮)触发,
并且页面无刷的时候(由于使用pushState修改了history)会触发popstate事件,
事件发生时浏览器会从history中取出URL和对应的state对象替换当前的URL和history.state。

通过event.state也可以获取history.state。

你可能感兴趣的:(单页路由实现方法)