路由——hash模式和history模式
2—history模式
(1)history模式下地址栏中没有#,从视觉上更加美观
(2)history路由的实现主要依赖于html5提供的history全局对象,这个全局对象暴露了一些有用的方法:
window.history.go:可以跳转到浏览器会话历史中指定的某一个记录页(简单理解:可以跳转到曾经访问过的某一个页面)
window.history.forward :可以跳转到浏览器会话历史中的下一页,和前进按钮相同
window.history.back:可以跳转到浏览器会话历史中的上一页,和后退按钮相同
window.history.pushState:可以将指定的路由数据push压入到浏览器历史会话栈里面,会使得浏览器会话栈的长度增加,即history.length + 1
window.history.replaceState:可以将当前页面的url替换成指定的url, 不会改变浏览器会话栈的长度,即history.length 不变
popstate:该事件只会被上述方法中前三种触发,pushState,replaceState 事件不会触发该事件
(3)history模式下手动刷新页面出现404错误的原因:因为history模式请求页面的地址是地址栏里面全部的内容
例如: http://192.168.30.161:5500/home 在页面不刷新的情况下默认访问的始终是路径下的index.html即http://192.168.30.161:5500/index.html,但一旦刷新页面后
访问的就是:http://192.168.30.161:5500/home/index.html,很明显服务器没有这个资源,所以会出现404错误
因此使用history模式的路由时需要配置nginx,告诉浏览器,当访问的资源不存在时,默认访问静态资源下的index.html

浙公网安备 33010602011771号