# nestJS **Repository Path**: studyYan/node_nest-JS ## Basic Information - **Project Name**: nestJS - **Description**: 这是我初学node + nestJS的一个库,坚持总有一天会见到胜利的。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-06 - **Last Updated**: 2025-11-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NestJS 学习项目
## 项目简介 这是一个 NestJS 框架的学习项目。[NestJS](https://nestjs.com/) 是一个用于构建高效、可扩展的 Node.js 服务端应用的渐进式框架,使用 TypeScript 编写。 ## 项目结构说明 ### 核心文件 - **`src/main.ts`** - 应用程序的入口文件,负责启动 NestJS 应用 - **`src/app.module.ts`** - 根模块,用于组织和配置整个应用的模块、控制器和服务 ### 功能模块目录 #### `src/common/` 目录(可复用技术模块) 为方便多模块复用、保持业务与基础设施解耦,本项目将通用能力集中在 `common/` 目录: - `common/uuid/` —— 静态模块示例,提供 `UuidService` 生成唯一 ID - `common/cache/` —— 动态模块示例,提供 `CacheModule.register(...)` 以配置前缀、TTL 等 根模块引用示例(`src/app.module.ts`): ```ts import { UuidModule } from './common/uuid/uuid.module'; import { CacheModule } from './common/cache/cache.module'; @Module({ imports: [UuidModule, CacheModule.register({ prefix: 'app', defaultTtl: 30 })], }) export class AppModule {} ``` #### `src/app/` 目录(示例模块) 这是项目的基础示例模块,展示了 NestJS 的基本结构: - **`app.controller.ts`** - 控制器文件,处理 HTTP 请求,定义路由和请求处理方法 - **`app.service.ts`** - 服务文件,包含业务逻辑,可以被控制器调用 - **`app.controller.spec.ts`** - 单元测试文件,用于测试控制器的功能 #### `src/cat/` 目录(猫咪功能模块) 这是一个实际的功能模块示例,用于演示如何管理猫咪数据: - **`cat.controller.ts`** - 猫咪控制器 - **作用**:处理与猫咪相关的 HTTP 请求(如获取猫咪列表、创建新猫咪等) - **用途**:定义 API 路由,接收客户端请求,调用服务层处理业务逻辑 - **`cat.service.ts`** - 猫咪服务 - **作用**:包含猫咪相关的业务逻辑 - **用途**:数据处理、业务规则实现、数据库操作等(与控制器分离,便于复用和测试) - **`dto/`** 目录(数据传输对象) - **`create-cat.dto.ts`** - 创建猫咪的数据传输对象 - **作用**:定义从客户端接收数据的结构和格式 - **用途**:数据验证、类型安全、API 文档生成(配合装饰器可以自动验证数据格式) - **`interfaces/`** 目录(接口定义) - **`cat.interface.ts`** - 猫咪数据接口 - **作用**:定义猫咪对象的数据结构(TypeScript 接口) - **用途**:提供类型定义,确保代码中使用的猫咪对象结构一致 ### NestJS 模块化设计思想 每个功能模块(如 `cat/`)通常包含: 1. **Controller(控制器)** - 负责接收请求和返回响应 2. **Service(服务)** - 负责业务逻辑处理 3. **DTO(数据传输对象)** - 负责定义和验证输入数据 4. **Interface(接口)** - 负责定义数据结构 这种结构让代码: - ✅ **职责清晰**:每个文件只做一件事 - ✅ **易于测试**:可以单独测试每个部分 - ✅ **便于维护**:修改时只需关注相关文件 - ✅ **利于扩展**:添加新功能只需创建新模块 ## 项目安装 ```bash # 安装依赖 $ pnpm install ``` ## 运行项目 ```bash # 开发模式(自动重启) $ pnpm run start:dev # 普通开发模式 $ pnpm run start # 生产模式 $ pnpm run start:prod # 构建项目 $ pnpm run build ``` ## 代码质量 ```bash # 代码格式化 $ pnpm run format # ESLint 检查和自动修复 $ pnpm run lint ``` ## 运行测试 ```bash # 单元测试 $ pnpm run test # 端到端测试 $ pnpm run test:e2e # 测试覆盖率 $ pnpm run test:cov ``` ## 学习资源 - 📚 [NestJS 官方文档](https://docs.nestjs.com)(中文版:[NestJS 中文文档](https://nestjs.bootcss.com/)) - 💬 [NestJS Discord 社区](https://discord.gg/G7Qnnhy) - 🎓 [NestJS 官方视频课程](https://courses.nestjs.com/) - 🛠️ [NestJS DevTools](https://devtools.nestjs.com) - 可视化应用结构 ## 技术栈 - **框架**:NestJS 11.x - **语言**:TypeScript 5.x - **包管理器**:pnpm - **测试框架**:Jest - **代码检查**:ESLint + Prettier ## 许可证 本项目采用 MIT 许可证