完整项目 示例代码

包含完整的项目代码、最佳实践和常见问题的解决方案

项目结构

清晰的项目目录结构,遵循 NestJS 最佳实践

项目目录

TypeScript
im-system/
├── src/
│   ├── auth/
│   │   ├── auth.controller.ts
│   │   ├── auth.service.ts
│   │   ├── auth.module.ts
│   │   ├── dto/
│   │   │   ├── login.dto.ts
│   │   │   └── register.dto.ts
│   │   ├── guards/
│   │   │   └── jwt-auth.guard.ts
│   │   └── strategies/
│   │       └── jwt.strategy.ts
│   ├── users/
│   │   ├── users.controller.ts
│   │   ├── users.service.ts
│   │   ├── users.module.ts
│   │   └── dto/
│   │       ├── create-user.dto.ts
│   │       └── update-user.dto.ts
│   ├── chat/
│   │   ├── chat.gateway.ts
│   │   ├── chat.service.ts
│   │   ├── chat.module.ts
│   │   └── dto/
│   │       └── create-message.dto.ts
│   ├── prisma/
│   │   ├── prisma.service.ts
│   │   └── prisma.module.ts
│   ├── common/
│   │   ├── filters/
│   │   │   └── http-exception.filter.ts
│   │   ├── interceptors/
│   │   │   └── transform.interceptor.ts
│   │   └── decorators/
│   │       └── current-user.decorator.ts
│   ├── app.module.ts
│   └── main.ts
├── prisma/
│   └── schema.prisma
├── test/
├── docker-compose.yml
├── Dockerfile
├── package.json
├── tsconfig.json
└── README.md

模块化架构

按功能模块组织代码

每个功能模块包含控制器、服务、模块和相关的 DTO、守卫等,保持代码的高内聚和低耦合。

数据层分离

Prisma ORM 集成

使用 Prisma 作为数据库工具包,提供类型安全的数据库访问和自动迁移功能。

安全认证

JWT + Passport 策略

基于 JWT 的无状态认证系统,结合 Passport 策略实现灵活的身份验证。

核心功能实现

关键功能的完整代码实现和最佳实践

认证模块

NestJS TypeScript PostgreSQL

完整的用户认证系统,包括注册、登录、JWT 令牌生成和验证功能。

WebSocket 网关

NestJS Socket.IO TypeScript

实时消息处理网关,支持房间管理、消息广播和用户状态同步。

消息服务

NestJS Prisma PostgreSQL

消息存储和查询服务,支持消息历史、状态管理和文件处理。

数据库模型

Prisma PostgreSQL

完整的数据库模型定义,包含用户、消息、群组等核心实体。

实时演示

体验实时聊天功能,测试 WebSocket 连接和消息同步

WebSocket 测试器

未连接
等待连接...

聊天室模拟

加入房间开始聊天...

最佳实践

开发过程中的经验和建议

代码规范

  • 使用 ESLint 和 Prettier 保持代码风格一致
  • 遵循 TypeScript 严格模式
  • 使用有意义的变量和函数命名

安全实践

  • 使用 HTTPS 和 WSS 协议
  • 实施输入验证和输出编码
  • 定期更新依赖包版本

性能优化

  • 使用 Redis 缓存热点数据
  • 实施数据库查询优化
  • 使用连接池管理数据库连接

测试策略

  • 编写单元测试覆盖核心业务逻辑
  • 实施集成测试验证 API 接口
  • 使用端到端测试验证用户流程

部署建议

  • 使用 Docker 容器化部署
  • 配置负载均衡和自动扩展
  • 设置监控和日志收集

文档维护

  • 使用 Swagger/OpenAPI 生成 API 文档
  • 编写详细的 README 和使用指南
  • 维护变更日志和版本管理