NestJS 知识框架
一、核心概念
1. 架构基础
-
基于 Express/Fastify 的 Node.js 框架
-
采用模块化设计
-
使用 TypeScript 构建(也支持 JavaScript)
-
借鉴 Angular 的设计理念
2. 主要组件
-
模块 (Module): 应用的基本组织单元
-
控制器 (Controller): 处理 HTTP 请求
-
服务 (Service/Provider): 业务逻辑封装
-
中间件 (Middleware): 请求处理管道
-
异常过滤器 (Exception Filter): 错误处理
-
管道 (Pipe): 数据验证和转换
-
守卫 (Guard): 认证和授权
-
拦截器 (Interceptor): AOP 编程
二、核心功能
1. 模块系统
-
@Module()
装饰器 -
模块类型:根模块、特性模块、共享模块、全局模块
-
模块元数据:providers, controllers, imports, exports
2. 依赖注入
-
基于 IoC (Inversion of Control) 容器
-
提供者注册与注入
-
作用域:DEFAULT, REQUEST, TRANSIENT
3. 控制器
-
路由定义
-
请求方法装饰器:
@Get()
,@Post()
,@Put()
,@Delete()
等 -
请求参数装饰器:
@Param()
,@Query()
,@Body()
,@Headers()
4. 提供者
-
服务、仓库、工厂等
-
自定义提供者
-
可选依赖
-
基于属性的注入
三、高级特性
1. 微服务支持
-
内置多种传输层:TCP, Redis, MQTT, NATS, gRPC 等
-
消息模式:请求-响应、事件发布-订阅
-
微服务客户端
2. WebSocket
-
网关 (Gateway)
-
订阅消息
-
消息广播
3. 数据库集成
-
TypeORM 支持
-
Sequelize 支持
-
Mongoose 支持
-
自定义提供者
4. 安全特性
-
认证:JWT, Passport 集成
-
授权:基于角色的访问控制 (RBAC)
-
CORS 支持
-
CSRF 防护
-
速率限制
5. 配置管理
-
配置模块
-
环境变量
-
自定义配置文件
-
验证配置值
四、测试
1. 单元测试
-
测试工具:Jest
-
测试模块
-
模拟提供者
2. E2E 测试
-
测试应用实例
-
请求模拟
-
数据库测试
五、最佳实践
1. 项目结构
-
功能模块组织
-
共享模块
-
核心模块
2. 性能优化
-
异步处理
-
缓存策略
-
压缩
-
集群模式
3. 部署
-
Docker 容器化
-
PM2 进程管理
-
健康检查
-
日志管理
六、生态系统
1. 官方工具
-
Nest CLI
-
Schematics
-
Swagger 集成
2. 常用第三方模块
-
缓存:CacheManager
-
队列:Bull
-
日志:Winston, Pino
-
监控:Prometheus
-
邮件:Nodemailer
3. 框架扩展
-
自定义装饰器
-
动态模块
-
生命周期钩子
七、学习资源
-
官方文档
-
NestJS 样板项目
-
社区插件
-
开源示例
这个框架涵盖了 NestJS 的主要知识点,可以作为学习或复习的路线图。根据您的具体需求,可以深入某个特定领域进行更详细的学习。