前端路由(router)的二种模式及区别
**前端路由(router)的二种模式及区别 **
答:hash模式和history模式
不同点:1 切换方式不同
hash: window.location.hash = 'qq' // 设置 url 的 hash,会在当前url后加上 '#qq
history: window.history.pushState 和 window.history.replaceState
2.监听的方式不同:(addEventListen)
hash:onhashchange
history: onpopstate(调用history.pushState()不会触发window.onpopstate()事件,只有浏览器有动作时才会触发监听事件,(history.go /back /forward))
window.history.pushState(state, title, url)
// state:需要保存的数据,这个数据在触发popstate事件时,可以在event.state⾥获取
// title:标题,基本没⽤,⼀般传 null
// url:设定新的历史记录的 url。新的 url 与当前 url 的 origin 必须是⼀樣的,否则会抛出错误。url可以是绝对路径,也可以是相对路径。
//如当前url是 https://www.baidu.com/a/,执⾏history.pushState(null, null, './qq/'),则变成 https://www.baidu.com/a/qq/,
//执⾏history.pushState(null, null, '/qq/'),则变成 https://www.baidu.com/qq/
window.history.replaceState(state, title, url)
// 与 pushState 基本相同,但她是修改当前历史记录,⽽ pushState 是创建新的历史记录
Hash优点:(1) 只需要前端配置路由表, 不需要后端的参与
(2) 兼容性好, 浏览器都能支持
(3) hash值改变不会向后端发送请求, 完全属于前端路由
History的缺点 :(1) 在用户手动输入地址或刷新页面时会发起url请求, 后端需要配置index.html页面,用户匹配不到静态资源的情况, 否则会出现404错误
(2) 兼容性比较差, 是利用了 HTML5 History对象中新增的 pushState() 和 replaceState() 方法,需要特定浏览器的支持.
参考文献: https://wenku.baidu.com/view/82582a6af76527d3240c844769eae009581ba285.html
分类:
面试题vue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律