

新闻资讯
行业动态JavaScript路由切换核心是不刷新页面改URL并响应视图变化,基于Hash(利用hashchange事件与location.hash)或History API(pushState/replaceState配合popstate事件),需路由表匹配路径与组件,并注意服务端配置。
JavaScript实现路由切换,核心是不刷新页面的前提下改变URL并响应视图变化。单页面应用(SPA)的路由原理,本质是利用浏览器历史API(pushState、replaceState)和URL哈希(hash)机制,配合监听事件(如popstate、hashchange),动态渲染对应组件或内容。
利用URL中#后面的部分(即hash值)变化不会触发页面刷新的特性,是最轻量、兼容性最好的方案。
window.location.hash = '#/user'手动修改URL,或点击首页自动更新hashhashchange事件:window.addEventListener('hashchange', () => { renderRoute() })
renderRoute()中解析location.hash(如'#/post/123'),匹配路由规则,加载/渲染对应视图使用history.pushState()和history.replaceState()可修改URL路径(如/about),且不向服务器发起请求,体验更接近传统多页应用。
history.pushState({ page: 'user' }, '', '/user')更新地址栏,不刷新页面popstate事件处理浏览器前进/后退:window.addEventListener('popstate', e => renderRoute(e.state))
index.html,否则直接访问/user会404无论用hash还是history,都需要一套映射关系来关联路径与组件/内容。
立即学习“Java免费学习笔记(深入)”;
const routes = [{ path: '/home', component: Home }, { path: '/user/:id', component: User }]
location.pathname或location.hash.slice(1)),支持简单匹配或正则/路径参数提取(如/user/123 → { id: '123' })document.getElementById('app').innerHTML = ''),再插入新内容或挂载组件React Router、Vue Router等封装了上述细节,提供声明式路由、嵌套路由、懒加载、守卫等能力,但底层仍依赖上述两种机制。
createBrowserRouter(基于history),也支持createHashRouter
history和hash两种模式,通过router.push()统一触发导航