NestJS 工程结构 (中)

625 阅读3分钟

概述

基于 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
  • 缓存方案使用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
    • 查看当前存在的服务和 PIDps 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 业务公用的DTO
      • encrypt.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 顶级 Controller
    • app.module.ts 顶级 Module
    • app.service.ts 顶级 Service
    • main.ts 项目主入口
  • /test 测试目录
  • /views 模版渲染目录(ejs、hbs)
    • admin 后台模版
    • default 前台模版
  • .env 测试环境配置
  • .env.prod 生产环境配置
  • tsconfig.json TS 配置项