前端路由核心是不刷新页面改变URL并响应视图变化,分History API(推荐、需服务端配合)和Hash(兼容好、SEO差)两类,现代框架均封装此机制。

JavaScript 实现前端路由,核心是**不刷新页面的前提下改变 URL 并响应视图变化**。主流方式分两类:基于浏览器 History API(推荐)和基于 URL Hash(兼容老浏览器)。现代框架(如 React Router、Vue Router)底层都封装了这两种机制。
利用 window.location.hash 变化触发路由,不向服务器发送请求,兼容性好(支持 IE8+)。
https://example.com/#/home、https://example.com/#/user/123
hashchange 事件,读取 location.hash.slice(1) 获取路径location.hash = '/about' 即可,浏览器自动记录历史基于 history.pushState() 和 history.replaceState(),配合 popstate 事件实现无刷新导航,URL 更干净(如 /user/123)。
window.addEventListener('popstate', handler)
history.pushState({ path: '/news' }, '', '/news')
pushState 不触发页面刷新,但不会加载新资源——渲染逻辑完全由 JS 控制适合理解原理,实际项目建议用成熟库:
立即学习“Java免费学习笔记(深入)”;
function router() {
const routes = new Map();
<p>function navigate(path) {
history.pushState({ path }, '', path);
render(path);
}</p><p>function render(path) {
const component = routes.get(path) || routes.get('/404');
document.getElementById('app').innerHTML = component?.() || 'Not Found';
}</p><p>window.addEventListener('popstate', e => render(e.state?.path || location.pathname));</p><p>return {
add: (path, handler) => routes.set(path, handler),
start: () => render(location.pathname)
};
}</p><p>// 使用
const app = router();
app.add('/', () => '<h1>首页</h1>');
app.add('/about', () => '<h1>关于</h1>');
app.start();
React 推荐 React Router v6+(基于 History API,默认 BrowserRouter);Vue 推荐 Vue Router 4(支持 history 和 hash 模式,可配置);纯 JS 项目可用 Page.js 或 Navigo 等轻量库。
基本原则:新项目优先用 History 路由(体验好、URL 正规),老项目或需 IE 支持再降级用 Hash 路由。
基本上就这些。不复杂但容易忽略服务端配置和 history 回退监听细节。
以上就是javascript如何实现路由_有哪些前端路由方式的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号