1.概述
Nest.js
是一个强大、可扩展且渐进式的 Node.js
框架,用于构建高效且可扩展的服务器端应用程序。受 Angular
启发,Nest.js
利用 TypeScript
并结合了面向对象编程(OOP
)、函数式编程(FP
)和函数式响应式编程(FRP
)的元素。
2.主要特性
- 🚀 模块化架构:采用模块化设计,促进代码可重用性和可维护性
- 💻 TypeScript 支持:一流的
TypeScript
集成,具有强类型 - 🔧 依赖注入:强大的内置依赖注入容器
- 🧩 装饰器:广泛使用装饰器,实现清晰和声明式的代码
- 🔌 微服务:原生支持微服务架构
- 🧪 测试:全面的测试工具和支持
3.核心概念
3-1.模块
Nest.js
使用模块来组织应用程序组件。每个模块封装相关功能。
typescript
@Module({
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
3-2.控制器
处理传入的 HTTP
请求并定义 API
端点。
typescript
@Controller('users')
export class UsersController {
@Get()
findAll() {
return '用户列表';
}
}
3-3.提供者
服务、仓库、工厂和其他可以作为依赖项注入的类。
typescript
@Injectable()
export class UsersService {
findAll() {
return ['用户1', '用户2'];
}
}
4.生命周期
txt
Incoming Request
↓
[Middleware (Express)]
(基于 Express 层,适合处理日志、请求体解析等通用逻辑)
↓
[Nest Lifecycle]
├─> Global Guards ← 权限/认证控制(可依赖注入)
├─> Route Guards
↓
├─> Global Pipes ← 参数验证、转换
├─> Route Pipes
↓
├─> Global Interceptors ← 方法前:日志、缓存、格式包装等
├─> Route Interceptors
↓
├─> Controller Handler ← 执行业务处理逻辑(Service 等)
↓
├─> Route Interceptors ← 方法后:结果包装、异常处理
├─> Global Interceptors
↓
[If any error occurs at any step above]
↓
Exception Filters (Route → Global) ← 捕获异常,统一格式响应
5.生态系统
ORM
集成(TypeORM
,Mongoose
)GraphQL
支持WebSockets
- 微服务模式
- 身份验证与授权
- 验证
- 缓存
- 任务调度