nestjs课程框架
太棒了!NestJS 是一个非常优秀且适合构建企业级应用的框架。为新手拟定一个从入门到中级的教程大纲,关键在于循序渐进、理论与实践结合、突出 NestJS 的设计哲学。
以下是一个详细的教程大纲,以**构建一个“博客管理API”**贯穿始终,让读者在实践中掌握知识点:
NestJS 入门到中级教程大纲:构建你的第一个博客API
前言:为什么选择 NestJS?
- 1.1 课程目标与受众
- 目标:让没有 NestJS 经验,但有一定 JavaScript/TypeScript 和 Node.js 基础的开发者,能够独立开发和部署一个中等复杂度的 NestJS API 应用。
- 学完能做什么:掌握 NestJS 核心概念,能开发 RESTful API,理解企业级应用架构。
- 1.2 NestJS 是什么?
- 受 Angular 启发,基于 TypeScript 的渐进式 Node.js 框架。
- 结合了 OOP (面向对象编程)、FP (函数式编程) 和 FRP (函数响应式编程) 的理念。
- 提供开箱即用的模块化、依赖注入、装饰器等特性。
- 1.3 为什么选择 NestJS?
- 强类型:TypeScript 带来的开发体验和可维护性。
- 模块化:清晰的项目结构,易于扩展和维护。
- 依赖注入:降低耦合度,方便测试。
- 一致性:提供统一的架构模式,团队协作效率高。
- 生态丰富:成熟的社区和各种集成方案。
- 1.4 本教程将构建的项目:简单的博客管理API
- 功能:用户管理 (注册、登录)、文章管理 (增删改查)、分类管理 (增删改查)。
第一部分:准备与起步 (Hello NestJS!)
- 2.1 开发环境准备
- 安装 Node.js (推荐 LTS 版本)。
- 安装 npm / yarn。
- 安装 VS Code 及推荐插件 (ESLint, Prettier, TypeScript TSLint Plugin)。
- Git 基础知识。
- 2.2 NestJS CLI 快速开始
- 全局安装 Nest CLI:
npm i -g @nestjs/cli - 创建新项目:
nest new blog-api - 项目结构初探:
src/目录、main.ts、app.module.ts等。 - 运行项目:
npm run start:dev,访问http://localhost:3000
- 全局安装 Nest CLI:
- 2.3 TypeScript 基础快速回顾 (针对性补课)
- 数据类型 (string, number, boolean, array, enum, any, unknown)
- 接口 (Interfaces)
- 类 (Classes)
- 装饰器 (Decorators) 概念及应用 (NestJS 中大量使用)
- 为什么学这个: NestJS 基于 TypeScript,理解其基础是学习 NestJS 的前提。
- 2.4 第一个“Hello World”控制器
- 理解
main.ts中的NestFactory.create()。 - 创建
app.controller.ts和app.service.ts。 @Controller()和@Get()装饰器。- 响应 JSON 数据。
- 学完能干嘛: 能够创建基本的 HTTP 路由和处理函数。
- 理解
第二部分:NestJS 核心概念:基石
- 3.1 模块 (Modules)
@Module()装饰器:imports,controllers,providers,exports。- 模块的组织和作用域。
- 根模块与特性模块。
- 实践: 创建
UserModule、PostModule、CategoryModule。
- 3.2 控制器 (Controllers)
@Controller()装饰器:定义路由前缀。- HTTP 方法装饰器:
@Get(),@Post(),@Put(),@Patch(),@Delete(),@All()。 - 路由参数:
@Param()。 - 查询参数:
@Query()。 - 请求体:
@Body()。 - 自定义状态码:
@HttpCode()。 - 实践: 为
User、Post、Category模块分别创建控制器,定义基本的 CRUD 路由。
- 3.3 提供者 (Providers - Services)
@Injectable()装饰器:标记为可注入的服务。- 服务的职责:封装业务逻辑,与数据源交互。
- 依赖注入 (Dependency Injection):原理与实践 (
constructor注入)。 - 自定义提供者:工厂函数、值提供者、类提供者 (了解)。
- 实践: 为
User、Post、Category模块分别创建 Service,并注入到对应的 Controller。
- 3.4 请求/响应生命周期
- 一个请求在 NestJS 中如何被处理。
- 学完能干嘛: 掌握 NestJS 的核心构建块,能够创建具备基本业务逻辑的模块化应用。