简易的路由功能实现
这里用到了popstate
事件,当活动历史记录条目更改时,将触发popstate
事件。MDN解释popstate
html代码
<a href="#/test1">测试1</a>
<a href="#/test2">测试2</a>
<a href="#/test3">测试3</a>
js实现
!{
cache: {},
active: null,
init() {
this.onPopState()
addEventListener('popstate', this.onPopState.bind(this))
},
onPopState() {
const path = (location.hash.match(/#\/(\w+)/) || [, 'main'])[1]
path !== this.active && this.route(path)
},
route(path) {
let active = this.active,
cache = this.cache
active in cache && delete cache[active]
this.active = path
//可以缓存一个实例对象,例如vue instance,此处缓存path
cache[path] = path
console.log(cache);
}
}.init()
init
主要负责添加popstate
,为了监听后续的路由地址变化。
onPopState
是popstate
的回调,对符合规则的地址使用路由驱动。
route
路由驱动
具体的渲染就不写了,在route
中新增对应钩子即可。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1094