Web中HashRouter与BrowserRouter选择
SPA技术下,对于WEB前端路由,有两个选项HashRouter,BrowserRouter,两个选择,有利有弊,需要根据实际情况去选择,这里就总结下。
HashRouter vs BrowserRouter
两种路由展示形式不同,HashRouter使用的URL哈希形式(比如https://1991421.cn#posts)来区分各个路由URL,而BrowserRouter使用的传统URL形式(比如https://1991421.cn/posts)来区分
BrowserRouter需要后台进行一定的设置,因为用户可能在某个URL下是可以执行浏览器刷新,这事服务端收到请求,那么需要确保该路由下,返回SPA的宿主页面,当然HashRouter不需要
1
2
3app.get('*', function (req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
});HashRouter因为利用的URL Hash,假如页面内部有目录锚点,而目录锚点如果放在URL上就会造成额外的问题,比如这样一个URL
https://1991421.cn/#posts/detail/1234567#comment
如果想获取目录锚点comment,使用location.hash结果将是#posts/detail/1234567#comment
,这种情况下只能文本匹配。HashRouter地址如果是表单提交,本身hash部分是不会作为地址的一部分发出