hash模式
url中带着#,hash值就是 #/...。
特点:hash出现在url中,但不会出现在HTTP请求中,对后端完全没有影响。所以改变hash值不会重新加载页面。hash值变化对应的url会被浏览器记录,可以实现页面的前进和后退。
history模式
url中没有#,它使用传统的路由分发模式,用户输入url,服务器接收请求并解析。history模式需要后台配置支持,如果后台没有正确的配置,访问时会返回404。
二者实现原理:
hash模式的实现原理是通过监听hashChange事件来实现的。history模式是通过调用 history.pushState方法(或者replaceState) 并且 监听popstate事件来实现的。
hash模式和history模式都有各自的优缺,要根据实际情况选择性的使用。