概述
基于 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
输出目录/docs
Doc输出目录/public
静态资源目录upload
图片上传目录
/src
项目开发目录common
公用目录captcha.ts
图片验证码生成CommonDto.ts
业务公用的DTOencrypt.ts
ID编码生成规则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.ts
DTO 入参规则校验auth.entity.ts
库表实体映射auth.module.ts
模块注册auth.service.ts
服务调用jwt.strategy.ts
Token 校验相关local.strategy.ts
账号密码本地认证
tasks
定时任务模块upload
上传模块user
用户模块
redis
缓存数据库redis-cache.module.ts
Redis 模块注册redis-cache.service.ts
Redis 类和方法的封装
app.controller.ts
顶级 Controllerapp.module.ts
顶级 Moduleapp.service.ts
顶级 Servicemain.ts
项目主入口
/test
测试目录/views
模版渲染目录(ejs、hbs)admin
后台模版default
前台模版
.env
测试环境配置.env.prod
生产环境配置tsconfig.json
TS 配置项