hash【主要原理就是onhashchange()事件】
- hash模式是开发中默认的模式,它的URL带着一个#
- hash值会出现在URL地址里面,但是不会出现在http请求中,对后端完全没有影响,当然也不会重新请求页面
- 低版本的浏览器支持这种模式的路由
- hash路由被称为是前端路由,已经成为SPA的标配
history模式
- history模式的URL中没有#,它是传统路由分发模式(就是用户输入一个url时候,服务器会接受这个请求,并解析这个URL,做出相应的逻辑处理)
- hash模式更加好看,例如/id这种
- history模式需要后台配置支持,如果后台没有正确配置,访问时会返回404
- 修改历史状态:新增pushState()和replaceState()方法,这个方法应用于浏览器的历史记录栈,提供对历史记录进行修改的功能,只是当他们进行修改的时候,虽然修改url,但浏览器不会立即向后端发送请求,如果要做到改变url但又不刷新页面的效果,就需要前端用上两个API
- 切换历史状态:forward() back() go(),前进,后退,跳转
- 刷新页面的时候,如果没有相应的路由或资源,就会刷出404