history和hash路由的区别

206 阅读2分钟

1. History 和 Hash 路由###

History 路由

History 路由是 React 应用中常用的路由方式,它基于 HTML5 的 History API。当用户导航时,浏览器不会发送请求,而是在浏览器历史记录中添加新的记录。这使得用户可以轻松地在浏览器中返回和前进。

History 路由的主要优点是用户体验更好,因为它不会导致页面刷新。但是,它也有一些限制,例如服务器需要配置,且不能用于跨域应用。

Hash 路由

Hash 路由是另一种常见的路由方式。它使用 URL 的锚点(#)来表示不同的路由。当用户导航时,浏览器会发送请求并更新 URL 的锚点部分。这使得用户可以在浏览器中直接分享链接。

Hash 路由的主要优点是它对服务器没有要求,且可以用于跨域应用。但是,它也有一些限制,例如用户不能通过浏览器后退按钮返回到上一页。

总的来说,History 路由和 Hash 路由都有各自的优缺点。根据应用的需求和场景,可以选择合适的方式。

2. 说说两者之间的区别

1. 浏览器兼容性:

History 路由基于 HTML5 History API,需要浏览器支持。而 Hash 路由兼容性更好,可以支持旧版浏览器。

2. URL 变化:

History 路由的 URL 是干净、友好的,没有 # 号。而 Hash 路由的 URL 包含 # 号,可能导致显示问题。

3. 服务器配置:

History 路由需要服务器配置,如使用 pushState 和 onPopState 事件。Hash 路由无需服务器配置。

4. 刷新和收藏:

History 路由不刷新页面,利于用户体验。Hash 路由刷新页面,但浏览器收藏功能不受影响。

5. 导航和后退:

History 路由可以正常使用浏览器后退和前进按钮。Hash 路由可以使用后退按钮,但需注意处理重复导航问题。

6. 跨域应用:

History 路由不能用于跨域应用,Hash 路由可以。

根据应用需求和场景,可以选择合适的路由方式。简单、轻量级应用或对浏览器兼容性要求高的场景可使用 Hash 路由;对用户体验和 SEO 有要求的应用可使用 History 路由。