NestJS Starter 项目设计文档 🎯 项目定位
基于 NestJS + TypeScript 的后端服务脚手架,目标是快速搭建可扩展、可维护的接口服务,支持 CURD + 登录认证 + 权限控制 的最小业务闭环。
🏗 技术栈
框架:NestJS(基于 TypeScript + 装饰器开发)
数据库 ORM:TypeORM
数据库:MySQL / PostgreSQL(可扩展)
缓存/会话:Redis
前端对接:Vue 3 + Bootstrap 5.x
工具库:
reflect-metadata(IoC/DI 必需)
class-validator + class-transformer(数据校验)
passport / jwt(认证与鉴权)
🔑 核心概念 编程思想
FP(函数式编程):函数输入输出确定、独立、透明
OOP(面向对象编程):抽象、封装、高内聚低耦合、继承、多态
AOP(面向切面编程):拦截器、日志、权限控制
IoC/DI(控制反转 & 依赖注入):模块化解耦,依赖通过容器注入
📦 项目结构(Monorepo 推荐) src ├── modules │ ├── user # 用户模块 │ │ ├── user.module.ts │ │ ├── user.controller.ts │ │ ├── user.service.ts │ │ ├── user.entity.ts │ │ └── dto │ ├── auth # 登录/认证模块 │ ├── role # 权限模块 │ └── common # 通用模块(拦截器、过滤器、管道等) │ ├── main.ts # 入口 └── app.module.ts # 根模块
⚙️ NestJS 生命周期
客户端 ➡️ 中间件 (Middleware) ➡️ 守卫 (Guard)(鉴权/权限控制) ➡️ 拦截器 (Interceptor)(日志、响应包装) ➡️ 管道 (Pipe)(请求参数校验/转换) ➡️ 控制器 (Controller)(路由入口) ➡️ 服务 (Service)(业务逻辑) ➡️ 仓储层 (Repository/DAO)(数据库操作) ➡️ 拦截器 (Interceptor)(结果加工) ➡️ 过滤器 (Exception Filter)(错误处理) ➡️ 响应 (Response) ➡️ 客户端
🛡️ 接口服务流程
请求数据校验(Pipe)
使用 class-validator 和 DTO 避免 SQL 注入 / 参数不合法
例如:ValidationPipe
请求认证 & 鉴权(Guard)
认证(Authentication):JWT / Session 校验用户身份
鉴权(Authorization):基于角色或权限判断接口访问权限
路由分发(Controller)
定义接口路由与请求方法
控制请求进入对应业务逻辑
功能逻辑处理(Service)
核心业务逻辑实现
高内聚,单一职责
数据库操作(Repository)
TypeORM 实体与数据库交互
支持 MySQL、Postgres 等多数据库
错误与日志(Filter & Interceptor)
全局异常过滤器处理错误响应
日志记录请求/响应信息
统一接口响应(Interceptor)
包装统一的 API 返回结构
{ code, message, data }
🚀 最小闭环功能
用户注册 / 登录(JWT)
用户信息 CRUD
权限控制(基于角色 / 权限表)
接口文档(Swagger)
日志与错误处理
📖 顶层设计思路
需求分析
核心痛点:快速开发接口服务,保证安全与扩展性
最小闭环:用户 + 权限 + 接口服务
接口服务
Web 服务(NestJS HTTP)
数据库(MySQL + TypeORM)
缓存(Redis)
上线流程
功能闭环完成
接口文档生成(Swagger)
部署与测试
发布与交付
📌 总结
由简入繁,先实现 接口 CRUD + 登录认证 + 权限控制,再逐步扩展。 NestJS 提供良好的分层架构,结合 AOP/DI 思想,可以快速构建高可维护、可扩展的后端项目。
dotenv js-yaml lodash config / nestjs/config. 环境配置 joi
docker:https://hub.docker.com/_/mysql :adminer :mysql
sql: ORM是什么?https://typeorm.io/docs/getting-started/ 集成TypeOrm typeorm-cli. / knex. prisma. sequelize. typeorm mongodb&mongose
typeorm-model-generator
需求分析 逻辑设计 数据库创建
日志: