案例介绍
本案例是一个完整的内容发布系统的开发,不会对Nest.js
入门进行讲解。如果不懂Nest.js
的,请先抽时间先对Nest.js
进行一次官网的文档(推荐阅读中文文档)通读,对其基本概念有一定的的了解与掌握。本案例会涉及到后端服务、前端系统,但是重点讲解后端服务的功能实现,前端系统仅只提供源代码,不做讲解。
可以学到知识
- 通用
- Docker 部署 MySQL、Redis
- Docker 部署 Node.js、前端项目
- 数据库一对一、一对多、多对一、多对多的表关系
- Redis 简单实现登录有限期、挤下线
- 爬去第三方完整的信息(爬虫)
- Nest.js
- 自定义拦截器(响应统一包装处理+响应日志文件)
- 自定义过滤器(错误统一处理)
- 自定义中间件(响应日志)
- 自定义装饰器(获取用户信息)
- 日志文件生成
- 实现接口权限
- 定时任务
- 前端
- Vite、Vue3
- Axios 封装 HTTP 请求
知识准备
由于 Nest.js
是基于 Node 的环境,因此需要具备基础的知识。
- HTTP: 了解基本的 Get、Post 请求
- Node:基本明白接口请求,知道服务与接口关系即可
- Typescript:基本懂语法,大致知道类、装饰器、枚举、接口(interface)
- Vue3:掌握基本语法
- Docker:安装 Docker 环境
案例功能
- 分类管理
- 标签管理
- 机器人管理
- 用户管理(角色权限)
- 登录、注册
- 分享发布
- 分享管理
- 分享归档
- 推送记录(月度、季度)
- 定时任务推送
具体可以看下图:
后端服务目录
.
├── logs
├── src
| ├── common # 公用(实体、Service基类等)
| ├── config # 自定义装饰器
| ├── constant # 自定义装饰器
| ├── decorator # 自定义装饰器
| ├── enum # 枚举
| ├── filter # 自定义过滤器
| ├── guard # 自定义守卫
| ├── interceptor # 自定义拦截器
| ├── middleware # 自定义中间件
| ├── module # 业务功能模块
| ├── pipe # 自定义管道
| ├── plugins # 插件(swagger)
| ├── schedule # 定时任务
| ├── type # 类型定义
| ├── utils # 工具类
| ├── app.controller.ts
| ├── app.module.ts
| ├── app.service.ts
| └── main.ts
├── test
├── .dockerignore
├── .env.development # 开发环境配置
├── .env.production # 生产环境配置
├── .env.test # 测试环境配置
├── Dockerfile # Docker 部署
├── env.d.ts
├── nest-cli.json
├── package.json
├── pnpm-lock.yaml
├── README.md
├── tsconfig.build.json
├── tsconfig.json
└── webpack.config.js # Webpack配置(只构建单文件产物)
表设计
完整案例代码
- 后端:TODO
- 前端:TODO
下一章节预告
项目搭建、配置,数据库、Redis运行与连接