react router中HashRouter和BrowserRouter的区别和使用场景

前言

在单页面应用中,如何在切换页面后,不刷新浏览器呢?为了解决这个问题,有两种方法,就是hash路由模式、history路由模式,而react router的两种路由就是使用这两种路由模式,本文就讲讲这两个路由模式

一、区别与特点

HashRouter

基于hash模式:页面跳转原理是使用了location.hash、location.replace;和vue router的hash模式实现一致
比较丑:在域名后,先拼接/#,再拼接路径;也就是利用锚点,实现路由的跳转;如:http://www.abc.com/#/xx

BrowserRouter

基于history模式:页面跳转原理是使用了HTML5为浏览器全局的history对象新增了两个API,包括 history.pushState、history.replaceState;和vue router的history模式实现一致
更加优雅: 直接拼接路径;如:http://www.abc.com/xx
后端需做请求处理: 切换路由后,请求接口路径会发生变化,后端需要配合,做处理

二、使用场景

HashRouter

项目部署在内网:如To B的项目、本公司业务人员用的项目等等

BrowserRouter

项目部署在公网:如To C的项目、面向大众的项目,url路径美观点当然更好,但后端需要做处理

三、使用方法

import React from 'react'
import {
  // HashRouter as Router, // hash模式
  BrowserRouter as Router, // history模式
  Route,
  Switch,
} from 'react-router-dom'
import Home from '../containers/home'

const BasicRouter = () => (
  <Router>
    <Switch>
      <Route exact path="/" component={Home} />
    </Switch>
  </Router>
)

export default BasicRouter

四、总结

1、根据项目类型,而选择:因为不同的项目需求是不一样的,选择能满足需求的路由模式
2、各有优缺点:hash模式,后端不需要做处理,而history模式,则需要;
3、实现方式不同:hash模式,是以锚点的方式实现路由的跳转,而history模式是使用H5在history对象上新增的API来实现路由的跳转


你可能感兴趣的文章:

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员良仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值