react项目——图书订阅系统(1)——需求分析、功能分析、基础环境配置
1.需求分析
自上一次react项目探路成功,已经基本熟悉了react脚手架创作前端,nodejs制作后端,并实现数据交互、组件间通信等基本流程,本次再熟练,将工作体量降下来,制作一个图书订阅系统,需求分析如下:
管理员可以进行书籍的上架、下架、查找、信息更新,进行记录、查询每本书的历史订阅记录;可以对订阅者的订阅申请做处理,可查询订阅者个人信息和历史订阅记录(如果该订阅者历史订阅信誉良好,可借);个人信息管理
用户可以进行书籍的订阅、查询书籍的数量、书籍订阅状态,查询、修改个人的基本信息,查询个人历史订阅记录(已还、未还以及详细信息)
2.功能分析
两个角色:管理员、用户
管理员:
——管理书籍
- 增加图书:如果增加已有图书,该图书数量+1;如果增加未有书籍,补充书籍的详细信息主要包括:出版单位名称、内容简介、name、书籍照片、作者、图书编号(name+唯一标识)
- 删除图书:删除该图书的所有基本信息
- 查询图书:以书名、作者、出版单位进行检索,可以查询图书基本信息、图书历史订阅记录;
- 更新图书:修改图书的封面照片等基本信息
——管理用户
- 查询用户基本信息
- 查询订阅申请者的个人信息、历史订阅记录、当前订阅数量、当前订阅书籍的剩余归还时间;
- 展示某时间段内的订阅流水:书籍名称、书籍编号、订阅人、同意订阅人、订阅起止时间、订阅状态
- 查询申请列表:展示所有订阅申请,并进行“同意”与“拒绝”操作,
用户:
——管理书籍订阅车
- 增加书籍到书籍订阅车,
- 在书籍订阅车删除书籍,
- 搜索图书,可查询到图书基本信息
- 提交订阅申请以及订阅时间
- 查询已提交的历史订阅申请
用户、管理员——个人信息管理:修改基本信息:姓名、学号、电话、密码、邮箱、身份;注销登录、退出登录
总结4个数据库表单:
- 管理员、用户的基本信息:姓名、学工号、电话、密码、邮箱;
- 书籍的基本信息:name、图书编号(name+唯一标识)、作者、出版单位名称、书籍封面照片、内容简介
- 订阅流水表:书籍名称、订阅人、管理员、订阅起止时间、订阅状态、书籍状态
3.基础环境配置
拟安装包:antdV4版本(之前文章提到过,官网也可以查到)、mongoose、react-router-dom、axios、express、nodemon(可以让后台server热更新)、cors(在后端解决跨域)、redux react-redux redux-devtools-extension
- create-react-app book
- yarn add antd @craco/craco craco-less
- antd v4版本官网有,总结在之前的开篇讲过:配置craco.config.js与package.json,在App.css中引入:@import '~antd/dist/antd.css';
- yarn add react-router-dom(如果出现问题 npm install react-router-dom --force)
- 文档配置,目录结构如下:
到此,react项目初始化配置基本完成,后面遇到新的功能、新的技术点再做即时标注,继续下一章。。。。。。
注:这次小项目,以制作过程为主,技术点如果牵扯大,我会单独列出去单独作为一篇
历史一周时间,做好了管理员的基础页面,从开始的路由配置问题开始,一路解决了后台服务器的搭建;数据库配置;页面如何跳转新的页面,如何在复杂页面继承父组件,实现局部跳转;解决了组件间的通信,了解到数据的持久化并不是靠state,而是局部数据在客户端的存储(但也正是在这里遇到了问题,设置的轮播图数据,存在localStorge中,依然渲染不到页面上,经验少,学完网课,自己真实去做还是会遇到很多bug,好事,知道自己的问题,再看别人的实战,就有目的性了,继续加油,等知道问题所在,继续做这个)。
再更,找到了问题所在,开心!!之前写的localStorge位置不对,应该在第一获取这个共享数据的那一快写,之后的组件不用再使用useNavigate去传数据了,因为当另一个组件无数据跳转时,就是会取不到数据的。
这里层级有两层,
2.用户: 用户设计