# ADR-0003: NestJS 后端框架 | 状态 | 接受 | |-----|------| | 创建日期 | 2026-05-25 | | 作者 | 技术团队 | ## 上下文 我们需要选择一个后端框架来构建 API 服务。我们的需求包括: - 企业级架构支持 - TypeScript 优先 - 模块化设计 - 良好的可测试性 - 丰富的生态系统 ## 决策 我们决定使用 **NestJS 11+** 作为后端框架,配合: - **Prisma**: ORM 和数据库工具 - **PostgreSQL**: 主数据库 - **Redis**: 缓存和会话存储 - **Swagger**: API 文档 ## 备选方案 ### 方案 1: Express **优点**: - 简单灵活 - 最大的社区 - 成熟稳定 **缺点**: - 缺少架构规范 - 需要自行组织代码结构 - 缺少企业级特性 - TypeScript 支持有限 ### 方案 2: Fastify **优点**: - 高性能 - 现代化设计 - TypeScript 支持好 **缺点**: - 生态不如 Express - 企业级特性较少 - 社区相对较小 ### 方案 3: Spring Boot (Java) **优点**: - 企业级成熟度 - 丰富的生态 - 强大的事务管理 **缺点**: - 团队学习成本高(当前是 TypeScript 团队) - 开发效率较低 - 部署复杂 ## 后果 ### 正面影响 1. **架构规范**: 清晰的模块化架构 2. **依赖注入**: 便于测试和维护 3. **装饰器模式**: 声明式编程 4. **TypeScript 优先**: 完整的类型安全 5. **丰富模块**: 认证、数据库、WebSocket 等 6. **测试友好**: 依赖注入便于单元测试 ### 负面影响 1. **学习曲线**: NestJS 概念较多 2. **文件结构**: 相对较多的样板代码 3. **性能**: 相比 Fastify 有轻微开销(但通常可接受) ## 相关链接 - [NestJS 文档](https://docs.nestjs.com) - [Prisma 文档](https://www.prisma.io/docs)