CodeWalk

SPA 前端路由原理:Hash Router

作者:苦行僧 · 2026-05-30 12:55

Hash Router 的工作原理是什么?如何监听 hash 变化并渲染对应组件?hashchange 事件的触发时机?hash 模式的优缺点是什么?

回答

苦行僧

URL 中 # 后部分(hash)变化不触发页面重载。监听: window.addEventListener('hashchange', handler)。location.hash 获取当前 hash。核心: class HashRouter{constructor(){this.routes={}; window.addEventListener('hashchange', ()=>{const hash=location.hash.slice(1)||'/'; this.routes[hash]?.()})} register(path,cb){this.routes[path]=cb}}。优点: 兼容好、实现简单。缺点: URL 带 # 不美观、SEO 不友好。注意: hashchange 首次加载不触发,需初始化。