概述
基于 NestJS 基本理论(上)和官方文档的API支撑,可以使用 NestJS 来写个项目
文档参考
前端功能
- 用户注册
- 账号密码登录(图片验证码、用户态持久化、过期掉线、请求自动续签)
- 修改密码
- 退出登录
- 定时任务
- 用户设置昵称
- 用户头像上传、存储、访问
- 删除单个用户(拉黑)
- 删除单个用户(拉黑)
- 下线单个用户
- 下线所有用户
- 查询验证码列表
- 清空验证码列表
- 分页查询用户表
- 分页查询登录表
- 导出用户表为 Excel
后端组成
- 接口文档集成
Swagger - 接口测试使用
ApiPost - 映射数据库表使用:
TypeORM - 验证入参配置 DTO 规则
class-validator - 包装出参全局配置
过滤器 & 拦截器 - 配置
/public为静态资源目录,模拟头像上传存储与访问 - 配置
/views为页面渲染资源,配合 ejs 实现模版渲染 - 鉴权认证使用
JWT - @todo 邮件推送服务
- @todo 事务处理
- 定时任务使用
@nestjs/schedule - 数据库可视化:
MySQL Workbench community-8.0.27 - 数据库:
mysql-8.0.31macos12- 启动方式:在偏好设置的 mysql 入口
start server即可 - 域名:
localhost - 端口:
3306 - 用户:
root - 密码:
rootpass - 库名:
NestData
- 启动方式:在偏好设置的 mysql 入口
- 缓存方案使用
redis- 启动命令:
$ /opt/homebrew/opt/redis/bin/redis-server /opt/homebrew/etc/redis.conf - 进入认证环境:
redis-cli -h 127.0.0.1 -p 6379 -a password - 认证账户:
auth 182 - 查看当前存在的服务和 PID
ps axu|grep redis - 强制退出 redis 服务:
sudo kill -9 18505(18505 数字位对应上条命令输出的第二列字段) - 域名:
127.0.0.1 - 端口:
6379 - 密码:
182
- 启动命令:
后端目录
/config配置目录env.ts环境配置方法
/dist输出目录/docsDoc输出目录/public静态资源目录upload图片上传目录
/src项目开发目录common公用目录captcha.ts图片验证码生成CommonDto.ts业务公用的DTOencrypt.tsID编码生成规则RootDirpath.ts根路径拼接封装salt.ts公用加盐方法swagger.ts接口文档集成配置
constant常量声明目录ApiWriteList.ts接口各种白名单队列LengthOfTime.ts各种时长声明RedisKeyPrefix.ts各种 Redis Key 前缀声明ServerListen.ts服务监听配置SwaggerConfig.ts接口文档常量配置
core洋葱模型filter过滤器transform.filter.ts请求异常过滤
guard守卫jwt.guard.ts接口鉴权守卫
interceptor拦截器transform.interceptor.ts拦截并统一包装返回值
middleware中间件logger.middleware.ts日志中间件
feature业务开发目录auth用户鉴权模块auth.controller.ts控制器auth.dto.tsDTO 入参规则校验auth.entity.ts库表实体映射auth.module.ts模块注册auth.service.ts服务调用jwt.strategy.tsToken 校验相关local.strategy.ts账号密码本地认证
tasks定时任务模块upload上传模块user用户模块
redis缓存数据库redis-cache.module.tsRedis 模块注册redis-cache.service.tsRedis 类和方法的封装
app.controller.ts顶级 Controllerapp.module.ts顶级 Moduleapp.service.ts顶级 Servicemain.ts项目主入口
/test测试目录/views模版渲染目录(ejs、hbs)admin后台模版default前台模版
.env测试环境配置.env.prod生产环境配置tsconfig.jsonTS 配置项