JavaScript路由切换核心是不刷新页面改变URL并更新视图,依赖History API(pushState/replaceState)和popstate事件监听,或Hash模式的hashchange事件,本质是路径字符串到渲染逻辑的映射。

JavaScript 实现路由切换,核心是不刷新页面的前提下改变 URL 并响应视图更新——这正是单页面应用(SPA)导航的基础。关键不在于重载整个页面,而在于监听 URL 变化、解析路径、匹配对应组件或内容,并动态渲染。
使用原生 History API 控制地址栏与前进后退
现代 SPA 路由依赖 history.pushState() 和 history.replaceState() 修改 URL,配合 popstate 事件监听浏览器导航操作(如点击返回/前进按钮)。
- pushState():添加新记录到历史栈(用户可点“返回”回到上一页)
- replaceState():替换当前历史记录(不增加新条目)
- 监听 popstate:在 URL 改变且由浏览器导航触发时执行路由逻辑
示例片段:
function navigateTo(path) {
history.pushState({ path }, '', path);
renderView(path); // 自定义渲染函数
}
window.addEventListener('popstate', (e) => {
renderView(e.state?.path || location.pathname);
});
// 点击链接时阻止默认跳转
document.querySelectorAll('a[data-router]').forEach(a => {
a.addEventListener('click', e => {
e.preventDefault();
navigateTo(a.getAttribute('href'));
});
});登录后复制
手动实现简易前端路由器(Hash 或 History 模式)
Hash 模式兼容性更好(URL 中 #/about),History 模式更美观(/about),但需服务端配合避免 404。
立即学习“Java免费学习笔记(深入)”;
标签: vue react javascript java html js 前端 浏览器 路由器 懒加载 栈 路由 win 常见
还木有评论哦,快来抢沙发吧~