Skip to content

NestJS 简介

Nest 是 Node.js 后端的企业级解决方案,用于构建高效、可扩展的 Node.js 服务器端应用程序的渐进式框架,由 Kamil Myśliwiec 开发,核心基于 TypeScript 构建,融合了面向对象编程(OOP)、函数式编程(FP)和函数式响应式编程(FRP)的理念,解决了传统 Node.js 后端架构松散、缺乏企业级规范的问题。

八大核心概念

  1. 控制器(Controller):处理 HTTP/WS 等请求,定义路由规则,接收请求参数并返回响应(对应 MVC 的「C」)。
  2. 提供者(Provider):核心抽象,包括服务(Service)、仓库(Repository)等,处理业务逻辑,可注入复用。
  3. 模块(Module):封装控制器、提供者等组件,定义应用的边界,根模块(AppModule)是应用入口。
  4. 中间件(Middleware):拦截请求 / 响应周期(如日志、跨域处理),兼容 Express/Fastify 中间件。
  5. 管道(Pipe):验证 / 转换请求数据(如参数类型转换、Joi/Zod 校验),防止非法数据进入业务层。
  6. 守卫(Guard):权限控制(如身份认证、角色授权),决定请求是否能到达控制器。
  7. 拦截器(Interceptor):拦截请求 / 响应(如日志记录、缓存、响应格式化、异常包装)。
  8. 过滤器(Filter):捕获未处理的异常,自定义异常响应格式(如统一返回 JSON 格式的错误信息)。

特点

  1. 强类型支持:原生基于 TypeScript,类型系统可大幅减少运行时错误,提升代码可读性和可维护性(也支持纯 JavaScript 开发)。
  2. 模块化架构:以「模块」为核心组织代码,符合 SOLID 原则,便于拆分、扩展和团队协作。
  3. 依赖注入(DI):内置轻量级依赖注入系统,解耦组件间的依赖关系,简化测试和复用。
  4. 装饰器驱动:通过装饰器(如 @Controller、@Injectable、@Get)简化路由、依赖注入、中间件等配置,开发效率更高。
  5. 生态兼容性:无缝兼容 Express/Fastify 的中间件、插件,同时提供丰富的官方模块(如 JWT 认证、TypeORM 集成、GraphQL 支持等)。
  6. 开箱即用的企业级特性:
    • 支持 RESTful API、GraphQL、WebSocket、微服务;
    • 内置管道(参数验证)、守卫(权限控制)、拦截器(请求 / 响应拦截)、过滤器(异常处理)等核心能力;
    • 原生支持测试(兼容 Jest),便于单元测试 / 集成测试。
  7. 高性能:可切换至 Fastify 作为底层框架,性能远超传统 Express 应用。

适用场景

  • 追求代码规范、可维护性的中大型 Node.js 后端项目,而非简单的小脚本 / 原型开发。
  • 企业级后端 API 服务(如电商、金融、SaaS 系统);
  • 微服务架构(Nest 提供专门的微服务模块,支持分布式系统);
  • 实时应用(聊天、实时通知、协作工具,基于 WebSocket);
  • GraphQL 服务(内置 GraphQL 模块,简化 schema 定义和 resolver 开发)。

生态

  • 底层 HTTP 框架:Express(默认)、Fastify(高性能替代);
  • 数据库:支持 TypeORM、Prisma、Mongoose 等 ORM/ODM,适配 MySQL、PostgreSQL、MongoDB 等;
  • API 类型:RESTful、GraphQL(Apollo/Mercurius)、WebSocket(Socket.io)、微服务(TCP/Redis/MQTT);
  • 认证授权:内置 @nestjs/jwt、@nestjs/passport,支持 JWT、OAuth2、RBAC 等。