前端路由分Hash和History两种实现:Hash靠location.hash变化与hashchange事件,兼容性好但URL带#;History用pushState/replaceState和popstate,URL干净需服务端fallback;手动实现需维护路由表并监听路径变化;主流框架路由库均基于二者封装。

前端路由不依赖服务端,靠 JavaScript 拦截 URL 变化并动态更新页面内容。核心在于监听地址栏变化、解析路径、匹配对应组件或逻辑,不刷新页面就能切换视图。
利用 location.hash 的变化(如 #/home → #/about)触发路由跳转。Hash 改变不会导致页面重载,且支持 hashchange 事件监听。
window.addEventListener('hashchange', handler)
location.hash.slice(1)(去掉 #)location.hash = '/user' 或 history.pushState 配合 hash(但更常用原生 hash 操作)使用 pushState、replaceState 修改 URL(如 /product/123),配合 popstate 事件监听浏览器前进/后退。
history.pushState({ page: 'detail' }, '', '/detail?id=123')
window.addEventListener('popstate', e => { console.log(e.state) })
结合 History API,维护路由表,响应路径变化:
立即学习“Java免费学习笔记(深入)”;
const routes = { '/': renderHome, '/about': renderAbout }
routes[location.pathname]?.()
onpopstate = () => routes[location.pathname]?.()
function goTo(path) { history.pushState({}, '', path); routes[path]?.(); }
/user/:id)、嵌套路由、守卫等实际项目中多用成熟库,避免重复造轮子:
createBrowserRouter + RouterProvider,声明式路由,支持嵌套、懒加载、导航守卫pages/ 或 app/ 目录结构自动生成路由),服务端渲染友好以上就是javascript如何实现路由功能_前端路由有哪些实现方式的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号