路由模式分为两种:hash和history
- hash模式:较为传统的模式,特点是URL中存在锚部分(#),#后面的内容不会被作为参数传给服务器,作用于前端路由。如果在控制台中修改location.hash,页面上也会出现实时跳转。hash模式最大的特点是改变URL中的hash部分(锚点以后的部分)不会引起页面刷新
window.addEventListener('hashchange',(e)=>{
console.log(e)
// 哈希原理:通过监听hashchange可以看到HashChangeEvent事件
})
- history模式:没有#号,对SEO友好,但发布上线后如果不使用中间件或其他方法处理,点击返回按钮将出现404。其底层是popstate事件
window.addEventListener('popstate',(e)=>{
console.log(e)
})
/*
通过此属性得到的是PopStateEvent,事件参数e中有back(返回路径)、current(当前页面)、forward(上一个页面)等信息
监听跳转:通过history.pushState({存点东西},'没啥用的参数','跳转路径'),跳转后不会被浏览器监听到
*/