1.7 KiB
1.7 KiB
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 团队)
- 开发效率较低
- 部署复杂
后果
正面影响
- 架构规范: 清晰的模块化架构
- 依赖注入: 便于测试和维护
- 装饰器模式: 声明式编程
- TypeScript 优先: 完整的类型安全
- 丰富模块: 认证、数据库、WebSocket 等
- 测试友好: 依赖注入便于单元测试
负面影响
- 学习曲线: NestJS 概念较多
- 文件结构: 相对较多的样板代码
- 性能: 相比 Fastify 有轻微开销(但通常可接受)