NestJS案例实操—01.案例整体介绍

302 阅读2分钟

案例介绍

本案例是一个完整的内容发布系统的开发,不会对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 环境

案例功能

  • 分类管理
  • 标签管理
  • 机器人管理
  • 用户管理(角色权限)
  • 登录、注册
  • 分享发布
  • 分享管理
  • 分享归档
  • 推送记录(月度、季度)
  • 定时任务推送

具体可以看下图: Snipaste_2023-03-22_00-26-15.png

后端服务目录

.
├── 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配置(只构建单文件产物)

表设计

category.png

完整案例代码

  • 后端:TODO
  • 前端:TODO

下一章节预告

项目搭建、配置,数据库、Redis运行与连接