React应用-路由引入&案例
What is SPA
- 单页 Web 应用( single page web application )
- 整个==应用只有一个完整的页面==, 也就是一个HTML
- 点击页面中的连接, ==不会刷新页面==, 只会做页面得到==局部更新==
- 数据都需要通过
ajax
请求回去, 并在前端==异步展现=
What is React Route
一个路由就是一个映射关系 ( key: value )
- key: IP或域名后的地址
- value: 可能是function, 也可能是component
前端路由
路由的基本原理基于浏览器的windows的BOM对象的history属性, 但是BOM(内部是栈结构)的原生操作接口不友好, 因此, 借助第三方库
history.js
操作BOM属性, 从而实现前端路由
- 如果==value内容对应的是一个组件Component==, 那么该路由为前端路由, 也叫浏览器路由, 用于页面展示内容
- 注册方式:
<Route path="./test" component={Test}>
- 工作原理: 当==点击路由链接==后, 浏览器的path变为/test时, 当前路由组件就会变为Test组件
后端路由
相关案例: 与githubSearch案例相关的代理服务器实现
相关
.zip压缩包
地址:https://img.eksnotebook.com/images/202411101641169.zip当前没有NAS, 所以就用这个凑乎一下
- 如果==value内容对应的是一个function==, 那么该路由为后端路由, 用于处理客户端提交的请求
- 注册方式:
router.get(path, function(req, res))
- 工作原理: 当node收到一个请求时, 根据请求路径找到匹配 的路由, 调用路由中的函数来请求处理, 返回响应数据
react-router-dom
tip
-
Router: 路由器
- 比如小米路由器
-
Route: 路由
- 比如小米路由器后面的插口
- 需要使用
Router
管理Route
-
react-router, 有三个库, 分别对应不同场景
-
给web专用( 当前的库, 更直接, 简单 )
-
给native专用
-
给两者通用
-
- react的一个插件库
- 专用来实现一个SPA应用
- 基于react的项目基本都会用到此库
主要API
// 内置组件
// 路由器
<BrowserRouter/> // 地址后面有'/'
<HashRouter/> // hash值( 锚点 ), 地址后面有'#' 后面内容不加到请求中,
<Redirect/>
<Link/> // 编写路由链接
<Route/> // 注册路由
<NavLink/> // Link的升级版, 可以高亮呦~~
<Switch/> // 包裹后, 仅匹配一次, 提高效率
// 其他
// history对象
// match对象
// withRouter函数
天禹老师课程小插曲
案例仓库地址
案例1:路由基本使用
- 下载
react-router-dom
- 使用==本地
bootstrap.css
文件==
关键点
- 明确好界面中的导航区、展示区
- 导航区的a标签改为Link标签
<Link to="/xxxxx">Demo</Link>