spa 单页面router 主要可以基于两种方式实现:修改哈希和直接修改url
1.根据在使用location 修改哈希的时候,页面不会刷新(angular1.x 路由采用)
2.根据h5 pushState 和replaceState 修改url 时,页面不会刷新(react-router、vue-router)
pushState/replaceState 执行时,url 会发生变化,但是浏览器并不会刷新,只有当前进或者后退触发时,页面才会刷新
pushState/replaceState 带的url 必须同源,否则会报错(防止恶意的脚本模仿)