前端路由

对比项 Hash 路由 Browser 路由
URL 结构 http://example.com/#/user/123http://example.com/user/123
是否发送到服务器 ❌ 否(# 后内容不发) ✅ 是(需服务器支持)
依赖 API window.onhashchange history.pushState() / replaceState()
刷新页面是否 404 ✅ 不会(前端自己处理) ⚠️ 会(需服务器配置 fallback)
SEO 友好性 ❌ 差(搜索引擎忽略 #) ✅ 好(URL 正常)
兼容性 ✅ 支持 IE8+ ✅ 需 IE10+(HTML5 History)
开发复杂度 简单 稍高(需服务端配合)
路由参数 支持查询参数 ?a=1 支持动态路由 /user/123
是否发给服务器 ✅ 不会 会发给服务器
前端能否拦截 ✅ 前端直接处理 ❌ 必须服务器先放行