Open MrSeaWave opened 2 years ago
客户端路由实现的思想:
基于 hash 的路由:通过监听hashchange事件,感知 hash 的变化
hashchange
// hash window.addEventListener('hashchange',function(e){ /* 监听改变 */ })
基于 HTML 5 history 路由:
history.go()
// history window.addEventListener('popstate',function(e){ /* 监听改变 */ }) // 注意⚠️的是:用 history.pushState() 或者 history.replaceState() 不会触发 popstate 事件。 popstate 事件只会在浏览器某些行为下触发, 比如点击后退、前进按钮或者调用 history.back()、history.forward()、history.go()方法。
react-router 实现的思想:
history
「源码解析 」这一次彻底弄懂react-router路由原理
https://vue3js.cn/interview/React/React%20Router%20model.html#hashrouter
1. React-Router的实现原理是什么?
客户端路由实现的思想:
基于 hash 的路由:通过监听
hashchange
事件,感知 hash 的变化基于 HTML 5 history 路由:
history.go()
等 APIreact-router 实现的思想:
history
库来实现上述不同的客户端路由实现思想,并且能够保存历史记录等,磨平浏览器差异,上层无感知