Nest.js 5 正式版:基於 TypeScript 面向切面程式設計的 Node.js 微服務框架

類別: IT
標籤: node.js
Nest.js

Nest.js 5 正式版釋出了,主要改進內容包括:

功能特性

  • core:支援非同步生命週期鉤子(OnModuleInit和OnModuleDestroy)#569

  • core:HTTP伺服器獨立性,fastify整合(FastifyAdapter)

  • core:允許繫結來自任何模組的全域性攔截器,過濾器,管道和看守器。例:

{  provide: APP_INTERCEPTOR,  useClass: LoggerInterceptor,}
  • core:@UseGuards(),@UsePipes(),@UseFilters(),和@UseInterceptors() 延伸,而不是重寫現有的後設資料

  • core:無處不在的注入(管道,過濾器,攔截器和看守器)

  • core:傳遞 ArgumentsHost 給異常過濾器器(訪問每個引數的能力)

  • core:通過增強 ExecutionContext 到攔截器和看守器(訪問每個引數和執行上下文的能力)

  • 微服務:重寫現有的傳輸器(TCP,Redis),提供新的策略:Nats,MQTT,gRPC

  • 全部:提高執行上下文效能(http,ws,microservices)

Bug 修復

  • 普通:移除 multer 依賴#532

  • 核心:懸掛 NestApplicationContext 過程#503

  • 微服務:併發問題(包括TCP和Redis傳輸器)#505

改進

  • 全部:刪除 reflect-metadata 依賴關係#563

  • 全部:將 RxJS 升級到6.0.0

  • all:升級Node.js> = 8.9.0(TypeScript目標es2017)

  • 核心:更多描述性例外(迴圈依賴)#493

  • 核心:與useContainer()(class-validator和typeorm封裝)#528相容的巢狀容器

  • 核心:移除靜態依賴(webpack相容性)

  • websockets:@WebSocketGateway()接受傳遞給socket.io例項#508的選項引數

棄用

  • 通用:棄用@Component(),@Middleware(),@Interceptor(),@Pipe(),和@Guard()裝飾器(使用@Injectable()替代)

  • 常見:刪除ExpressMiddleware(使用MiddlewareFunction)

  • 核心:棄用modules: [](使用imports: [] )

  • 核心:棄用components: [](使用providers: [])

  • 核心:刪除MiddlewaresConsumer(使用MiddlewareConsumer)

值得注意的是

  • 從傳統的 express中介軟體模式轉向每個中介軟體都被限制在一個特定的路由上,而不管請求方式如何

另外,這個版本支援將底層的 express 替換為 fastify (號稱最快的 Node.js 框架)

5.0 中文文件:https://docs.nestjs.cn/5.0/firststeps

Nest.js 5 正式版:基於 TypeScript 面向切面程式設計的 Node.js 微服務框架原文請看這裡