hash模式
以#为分隔符, 通过hashchange事件来实现

history模式
通过popstate事件以及history的pushState, replaceState方法来实现

两种模式的实现详见前端路由两种模式的实现

两者比较:
history模式相对于hash模式更加美观, 但刷新会出现404, 这样history就需要服务器端进行配置, 这其实也并不是一个坏事儿, 相应的, 服务端在history模式下可以获取每次请求的路径, 从而更好地提供追踪和数据分析服务, 而hash模式#后的路径服务器端并不能收到, 所以两种模式各有优劣, 不过更推荐history模式, 毕竟颜值即正义呀233