history模式
- history模式url干净无/#/特殊标志
- 路由通过history.pushState等API来进行切换的
- 兼容性差,是使用H5新增的history.pushState等API修改url的
- 应用部署上线后需要后端支持解决页面刷新404的问题
hash模式
- 地址栏中带有特殊的#标志
- 路由是通过监听hashChange事件来进行切换的
- 兼容性比history模式好
- #后的内容不会包含在http请求中
history模式出现线上刷新页面404的原因
在前端进行页面访问时,浏览器会发起http请求获取当前页面的资源。因为项目是通过路由跳转的,webpack帮忙处理了这种情况。但在生产环境中没有这些配置,当我们访问/xxxx/xxx时,浏览器会去请求下载这个url的资源,但是实际并不存在这个url的资源,所以就会出现404的现象