forked from datawhale/whale-town-end
dff0ac83257889fd6f4792ff8984a281d8b7dc12
- 将日志记录规范重构为日志系统使用指南 - 保留实用的使用方法和最佳实践 - 添加依赖注入和请求上下文绑定示例 - 简化内容,专注于实际使用方法
Pixel Game Server
一个基于 NestJS 的 2D 像素风游戏后端服务
技术栈
- NestJS
^10.0.0- 渐进式 Node.js 框架 - TypeScript
^5.3.0- 类型安全 - Socket.IO - WebSocket 实时通信支持
- RxJS
^7.8.1- 响应式编程库
核心依赖
生产环境:
@nestjs/common^10.0.0- NestJS 核心功能@nestjs/core^10.0.0- NestJS 核心模块@nestjs/platform-express^10.0.0- Express 平台适配器@nestjs/websockets^10.0.0- WebSocket 支持@nestjs/platform-socket.io^10.0.0- Socket.IO 适配器reflect-metadata^0.1.13- 装饰器元数据支持rxjs^7.8.1- 响应式编程
开发环境:
@nestjs/cli^10.0.0- NestJS 命令行工具@nestjs/schematics^10.0.0- NestJS 代码生成器@types/node^20.0.0- Node.js 类型定义ts-node^10.9.0- TypeScript 运行时typescript^5.3.0- TypeScript 编译器
开发规范
命名规范
项目采用统一的命名规范,确保代码风格一致:
- 文件/文件夹:下划线分隔(如
order_controller.ts) - 变量/函数:小驼峰命名(如
userName、async queryUserInfo()) - 类/构造函数:大驼峰命名(如
UserModel、OrderService) - 常量:全大写 + 下划线(如
PORT、DB_HOST) - 接口路由:全小写 + 短横线(如
/user/get-info、/order/create-order)
详细规范请查看:命名规范文档
Git 提交规范
项目采用约定式提交规范,提交信息格式:<类型>:<简短描述>
常用提交类型:
feat- 新增功能fix- 修复 Bugdocs- 文档更新style- 代码格式调整refactor- 代码重构perf- 性能优化test- 测试相关chore- 构建/工具变动
后端特定类型:
api- API 接口db- 数据库websocket- WebSocketauth- 认证授权dto- 数据传输对象service- 服务层
核心原则:
- ⭐ 一次提交只做一件事
- 使用中文冒号
: - 简短明确(不超过 50 字符)
- 能拆分就拆分,保持提交历史清晰
示例:
git commit -m "feat:实现玩家注册和登录功能"
git commit -m "fix:修复房间加入时的并发问题"
git commit -m "api:添加玩家信息查询接口"
详细规范请查看:Git 提交规范文档
文档
- NestJS 使用指南 - 详细的 NestJS 开发指南,包含实战案例
- 命名规范 - 项目命名规范和最佳实践
- Git 提交规范 - Git 提交信息格式和最佳实践
前置要求
- Node.js >= 18.0.0
- pnpm >= 8.0.0(推荐)
如果还没有安装 pnpm,请先安装:
npm install -g pnpm
检查版本:
node --version
pnpm --version
安装依赖
pnpm install
注意:首次安装时,pnpm 可能会提示需要批准构建脚本。这是 pnpm 的安全特性,用于防止恶意脚本执行。
如果看到以下警告:
Warning: Ignored build scripts: @nestjs/core.
Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.
请运行以下命令批准 NestJS 的构建脚本:
pnpm approve-builds
然后选择批准 @nestjs/core 和其他 NestJS 相关包的构建脚本。
开发
启动开发服务器(支持热重载):
pnpm dev
服务器将运行在 http://localhost:3000
构建
pnpm build
生产环境运行
pnpm start:prod
项目结构
src/
├── api/ # API 接口层(控制器、网关)
├── config/ # 配置文件
├── data/ # 数据访问层(数据库、缓存)
├── model/ # 数据模型、实体、DTO
├── service/ # 业务逻辑层
├── utils/ # 工具函数
├── main.ts # 应用入口
├── app.module.ts # 根模块
├── app.controller.ts # 根控制器
└── app.service.ts # 根服务
test/
├── api/ # API 测试
└── service/ # 服务测试
下一步
- 在
src/api/目录下创建游戏相关的控制器和网关 - 在
src/model/目录下定义游戏数据模型 - 在
src/service/目录下实现游戏业务逻辑 - 使用 NestJS CLI 快速生成模块:
nest g module game - 添加 WebSocket 网关实现实时游戏逻辑
Languages
TypeScript
99.9%