设计“哈希路由(Hash Routing)”规则,通常出现在前端单页应用(SPA)中,用于在不需要后端配合、不改变真实 URL 路径的情况下实现页面切换。下面从原理 → 规则设计 → 示例 → 最佳实践逐步说明。
哈希路由利用 URL 中的 # 后面的部分:
https://example.com/#/user/profile
#/user/profile 就是路由信息hashchange 事件通知前端核心监听方式:
window.addEventListener('hashchange', () => {
const route = location.hash.slice(1); // 去掉 #
});
设计哈希路由规则时,建议考虑以下 5 点:
推荐使用 / 作为 hash 路由起点:
#/home
#/user
#/order/detail
避免:
#home
#user/profile
使用类 REST 风格:
#/模块/子模块/资源ID
示例:
#/user/list
#/user/detail/123
#/settings/security
#/user/detail/123
#/user/detail?id=123
必须设计一个默认页:
#/home
或
#/(空 hash)
建议统一跳转:
#/404
const routes = {
'/': Home,
'/user': UserList,
'/user/detail/:id': UserDetail,
'/settings': Settings,
'/404': NotFound
};
function matchRoute(path) {
for (const key in routes) {
const regex = new RegExp('^' + key.replace(/:\w+/g, '(\\w+)') + '$');
const match = path.match(regex);
if (match) {
return {
component: routes[key],
params: match.slice(1)
};
}
}
return { component: routes['/404'] };
}
#/user
└─ #/user/profile
└─ #/user/security
#/old-page → #/new-page
if (!isLogin() && path !== '/login') {
location.hash = '#/login';
}
hashchange 前保存| 对比项 | Hash 路由 | History 路由 |
|---|---|---|
| 是否需要后端 | ❌ 不需要 | ✅ 需要 |
| 刷新是否安全 | ✅ 安全 | ❌ 需配置 |
| URL 美观度 | 一般 | 更好 |
| 适合场景 | 静态站点 / 内嵌页 | 标准 SPA |
哈希路由规则设计的关键是:统一前缀、路径化结构、参数清晰、默认与异常路由齐全。
如果你有具体使用场景(如 Vue / React / 原生 JS / 微信内嵌页),我可以直接帮你设计一套可用的路由规则。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。