hash 是指 URL 中#后面的部分,虽然出现在URL中,但是不会被包含在HTTP请求中,对后端完全没有影响,改变 hash 值也不会重新加载页面,hash 值的改变会触发 hashchange 事件,可以通过监听该事件对页面进行操作。
window.onhashchange = function() {};


history路由是html5新增的,常用方法有back(),go(),forward(),pushState(),replaceState()等方法,这些方法执行时,虽然会改变当前的 URL 值,但不会立即向后端发送请求,除非手动触发

history路由方式在刷新页面时,如果服务器中没有相应的资源,就会报404错误,一般需要后端开发人员配合配置一个默认页面;而 hash 路由模式下因为只有 # 之前的内容包含在 HTTP 请求中,所以就算所访问的 hash 值没有对应资源,也不会报404错误;另外,hash 路由模式对浏览器的兼容性比 history 路由模式好。hash 路由模式的缺点:URL 中 hash 值前会有 # 符号,不符合 URL 规范,影响美观

vue-router 中默认采用的是 hash 模式,如果想要采用 history 路由模式,需要在实例化 vueRouter 时指定 mode 为 history。
const router = new VueRouter({
mode: 'history',
routes: []
});

posted on 2020-09-07 16:47  取名向来是件难事  阅读(792)  评论(0编辑  收藏  举报