之前负责了一个项目,使用的是vue。为了避免在地址链接的时候出现问题后端要求去掉#号,也就是使用history模式。
更改history模式后打包部署后发现页面空白。查询了下官网的文档资料https://router.vuejs.org/zh/guide/essentials/history-mode.html#后端配置例子 后端需要同步配置才能使用history模式。
但是依旧不可用,查了下由于我是在子目录下的,所以需要在路由配置文件添加一行代码。
ps: 虽然这样解决了问题,但是这样的配置会导致404页面无法打开,需要额外配置404页面
最后记录下Vue的History模式和Hash模式的区别
Hash模式是会带有#号的,浏览器向服务端发送请求时,只会把#前的链接发送给服务端,所以后端并不需要处理,并且页面可以刷新不会返回404之类的页面。
但是这个#号往往会给我们来带一些奇怪的bug,比如生成二维码的时候会自动过滤掉#后面的参数啊,微信登录,已经分享的时候都会把#后面的参数或者路径都过滤掉。
History模式跟Hash最大的区别就是没有#,不怕前进,不怕后退,就怕刷新,当刷新时,如果服务器中没有相应的响应或者资源,就会报错404。
摘抄自以下两篇内容
https://www.jianshu.com/p/bfffb4b8c9fa
https://zhuanlan.zhihu.com/p/127186558