
react 生态圈之 React Router
发布日期:2021-05-08 01:27:11
浏览次数:14
分类:原创文章
本文共 1468 字,大约阅读时间需要 4 分钟。
一、React Router,路由不止是页面切换,更是代码组织方式
- 为什么需要路由,如下所示:
- 单页应用需要进行页面切换
- 通过
URL
可以定位到页面 - 更有语义的组织资源
React Router
的特性,如下所示:
- 声明式路由定义
- 动态路由
- 三种路由实现方式,如下所示:
URL
路径hash
路由- 内存路由
- 基于路由配置进行资源组织,如下所示:
- 实现业务逻辑的松耦合
- 易于扩展,重构和维护
- 路由层面实现
Lazy Load
React Router API
,如下所示:
<Link>
,普通链接,不会触发浏览器刷新<NavLink>
,类型Link
但是会添加当前选中状态<Prompt>
,满足条件时提示用户是否离开当前页面<Redirect>
,重定向当前页面,例如登录判断<Route>
,路由配置的核心标记,路径匹配时显示对应组件<Switch>
,只显示第一个匹配的路由
二、React Router,参数定义,嵌套路由的使用场景
- 通过
URL
传递参数,如下所示:
- 如何通过
URL
传递参数,<Route path ="/topic/:id" .../>
- 如何获取参数,
this.props.match.params
-
何时需要
URL
参数,页面状态尽量通过URL
参数定义 -
嵌套路由,如下所示:
- 每个
React
组件都可以是路由容器 React Router
的声明式语法可以方便的定义嵌套路由
三、UI 组件库的对比和介绍,Ant.Design,Material UI,Semantic UI
- 选择
UI
库的考虑因素,如下所示:
- 组件库是否齐全
- 样式风格是否符合业务需求
API
设计是否便捷和灵活- 技术支持是否完善
- 开发是否活跃
四、使用 Next.js 创建 React 的同构应用
-
同构应用,浏览器初次发送请求给服务器,服务端逻辑,服务器返回渲染后的
App
页面给浏览器,客户端操作 -
创建页面,如下所示:
- 页面就是
pages
目录下的一个组件 static
目录映射静态文件page
具有特殊静态方法getInitialProps
- 在页面中使用其它
React
组件,如下所示:
- 页面也是标准的
node
模块,可使用其它React
组件 - 页面会针对性打包,仅包含其引入的组件
- 使用
Link
实现同构路由,如下所示:
- 使用
next/link
定义链接 - 点击链接时页面不会刷新
- 使用
prefetch
预加载目标资源 - 使用
replace
属性替换URL
五、使用 Jest、Enzyme 等工具进行单元测试
React
让前端单元测试变得容易,如下所示:
React
应用很少需要访问浏览器API
- 虚拟
DOM
可以在NodeJS
环境运行和测试 Redux
隔离了状态管理,纯数据层单元测试
- 单元测试涉及的工具,如下所示:
Jest,Facebook
开源的JS
单元测试框架JS DOM
,浏览器环境的NodeJS
模拟Enzyme
,React
组件渲染和测试nock
,模拟HTTP
请求sinon
,函数模拟和调用追踪istanbul
,单元测试覆盖率
六、常用开发调试工具,ESLint、Prettier、React DevTool,Redux DevTool
ESLint
,如下所示:
- 使用
.eslintrc
进行规制的配置 - 使用
airbnb
的Javascript
代码风格
Prettier
,如下所示:
- 代码格式化的神器
- 保证更容易写出风格一致的代码
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月05日 17时06分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
6.14编一个程序,将两个字符串s1和s2比较,不要用strcmp函数。
2019-03-05
Java纯文本文件显示工具制作
2019-03-05
三、案例:留言板 & url.parse()
2019-03-05
LeetCode:28. 实现 strStr()——————简单
2019-03-05
Lionheart万汇:布林线双底形态分析技巧
2019-03-05
Vue使用bus进行组件间、父子路由间通信
2019-03-05
数据库三个级别封锁协议
2019-03-05
类的实例
2019-03-05
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
2019-03-05
方法重写
2019-03-05
Threading Programming Guide(多线程编程指南)
2019-03-05
Java求逆波兰表达式的结果(栈)
2019-03-05
Application received signal SIGSEGV
2019-03-05
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2019-03-05
SLAM学习笔记-求解视觉SLAM问题
2019-03-05
普歌-允异团队-HashMap面试题
2019-03-05
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
2019-03-05
程序员应该知道的97件事
2019-03-05
create-react-app路由的实现原理
2019-03-05
Linux环境变量配置错误导致命令不能使用(杂谈)
2019-03-05