1.hash和history从外观表象上的区别是“#”的区别,本质上hash 和 history 都属于浏览器自身的特性,Vue-Router 利用了这两个特性(通过调用浏览器提供的接口)来实现前端路由,hash模式主要是通过hashchange方法监听hash值后面的变化,history有pushState,replaceState,go,back,forward等方法。 2.history不怕前进和后退,就怕刷新,刷新相当于从服务端请求当前URL,所以需要服务端做支持,vue的官方文档有很详细的说明,针对IIS,nginx,apache的。 3.hash模式有一定的弊端,nginx 做rewrite redirect的时候无法截取#后面的值,所以当你用hash模式,如果有第三方跳转过来,需要携带参数,而此时又需要做rewrite和redirect转发的时候,便无法获取#后面的参数。