区别:路由路径没#, 刷新会携带路由路径, 默认会出404问题, 需要配置返回首页(vue是单页面应用)
404问题
hsitory有:刷新会携带前台路由路径,没有对应的资源返回
hash没有: 刷新时不会携带路由路径
解决:
开发环境:如果是脚手架项目,本身就配置好了
生产环境打包运行 配置nginx
location / {
try_files $uri $uri/ /index.html; # 所有404的请求都返回index页面
}
hash路由路径带#,刷新不会携带路由路径,请求的总是根路径
原理:
history:内部使用的是history对象的pushState和replaceState()
hash: 内部利用的是location对象的hash语法
- 写hash路径 location.hash = '#/xxx'
- 读hash路径: location.hash
- 监视hash路径的变化: window.onhashchange = () => {}