一、核心概念
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 的主要知识点,可以作为学习或复习的路线图。根据您的具体需求,可以深入某个特定领域进行更详细的学习。