history的pushState/replaceState理解
在html5中 推出了history这种新的语法 其中 我们可以利用他来完成不同网页之间的跳转 并且通过不同的api调用可以完成同一个需求
1.pushState
该方法除了可以帮助我们完成不同url之间的跳转以外 还支持网页的前进和后退
原理:你可以将网页的前进和后退操作看待成两个栈此消彼长的过程 其中 一个栈的栈顶元素用于进行页面展示 而另外一个栈则用于暂时存放一些网页元素 当我们进行网页的前进操作时 我们首先会考虑第二个栈是否为空 不为空的话 就将第二个栈的栈顶元素压入第一个栈作为栈顶元素进行展示 反之会将网页元素加入到第一个栈作为栈顶元素 并且展示该栈顶元素 而对于网页的后退操作而言 我们则是将第一个栈中的栈顶元素弹出 并且暂时存放到第二个栈中 以备加入到第一栈作为栈顶元素进行展示
真实的原理不是上述所述 只不过上述过程可以用于模拟网页的前进和后退过程 帮助理解罢了
2.replaceState
该方法同样可以帮助我们完成不同url之间的跳转 但是他和pushState不同的地方在于他不支持网页的前进和后退 因为他不能够像pushState那样准备两个栈以支撑网页的前进和后退操作