hash和history路由的区别

您所在的位置:网站首页 hash路由和history的区别 hash和history路由的区别

hash和history路由的区别

2023-08-20 15:40| 来源: 网络整理| 查看: 265

history模式是通过调用window.history对象上的一系列方法来实现页面的无刷新跳转。

路径直接拼接在端口号后面,后面的路径会随着http请求发给服务器。

利用HTML5 History Interface中新增的 pushState() 和 replaceState() 方法来实现无刷新跳转的功能。

这两个方法应用于浏览器的历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。只是当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求。

由于History API的缘故,低版本浏览器有兼容性问题。

生产环境下,如果在当前的页面刷新一下,此时会重新发起请求,如果后端配置的 nginx 没有匹配到当前url,就会出现404的页面。 eg:当我们把 history 项目部署到服务器中后,此时我们在浏览器输入一个网址(比如是 www.test.com ), 此时会经过 dns 解析,拿到 ip 地址后根据 ip 地址向该服务器发起请求,服务器接受到请求后,然后返回相应的结果(html,css,js)。如果我们在前端设置了重定向,此时页面会进行跳转到 www.test.com/home ,在前端会进行匹配对应的组件然后将其渲染到页面上。此时如果我们刷新页面的话,浏览器会发送新的请求 www.test.com/home, 如果后端服务器没有 /home 对应的接口,那么就会返回404。

解决办法:可以在 nginx 做代理转发,配置按顺序检查参数中的资源是否存在,如果没有找到,让 nginx 内部重定向到项目首页。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3