网站建设中html 下载,哪个平台做网站比较好,有没有兼职做网站的,长沙微信乘车码在哪里前言
NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架#xff0c;它使用 TypeScript 作为开发语言#xff0c;也支持原生的 JavaScript。在 NestJS 中#xff0c;生命周期事件是一个重要的概念。在我们构建和管理应用程序时#xff0c;有时需要在特定…前言
NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架它使用 TypeScript 作为开发语言也支持原生的 JavaScript。在 NestJS 中生命周期事件是一个重要的概念。在我们构建和管理应用程序时有时需要在特定的阶段执行一些操作例如在创建实例添加或删除模块突然终止程序时对这些事件加以利用可以使我们的应用程序更强大、灵活。
在本文中我将介绍 NestJS 的生命周期如何使用生命周期并通过给出详细的例子加深理解。
NestJS 有哪些生命周期
NestJS 的生命周期钩子允许你在特定时刻执行特定代码例如在模块初始化或关闭应用时。在 NestJS 中每个模块和提供者providers都有自己的生命周期。
其中可能包括如下几种事件 应用启动阶段 onModuleInit() 当你的模块通过 modules 数组注册在 Nest 应用程序中时内部所有的 providers包括你的服务、守卫、拦截器等初始化后会调用此方法。这是生命周期的第一个环节。 onApplicationBootstrap() 此阶段表示所有的东西模块、providers 以及路由加载器等都已经被完全初始化Nest 应用实例已准备好处理请求了。因此这是 bootstraping 过程的最后一个步骤它也表示 HTTP 服务器已完成启动。
应用关闭阶段 onModuleDestroy() 当正在销毁 module 时通常是你主动调用了 app.close()或者 Nest 进程被 OS 发来的 SIGINT、SIGTERM 等信号中断时这个方法会被调用。 BeforeApplicationShutdown 任何实现了 BeforeApplicationShutdown 的方法在应用关闭前都会被调用。如果是因为应用收到系统信号并准备进行关闭处理时例如 SIGTERM 或 SIGINT对应的信号名称将传给 beforeApplicationShutdown(signal?: string) 这个方法。 onApplicationShutdown() 此阶段是关闭过程的最后一个步骤。它给 Nest 大环境一些时间做最后的清理行为例如日志写入等。当这个方法执行完后进程就会正式退出。 如果生命周期方法返回一个 PromiseNest 将等待这个 Promise 完成或者解决之后再继续生命周期。 生命周期使用方式
OnModuleInit VS OnModuleDestroy
import { Injectable, OnModuleInit, OnModuleDestroy } from nestjs/common;Injectable()
export class LoggingService implements OnModuleInit, OnModuleDestroy {onModuleInit() {console.log(The LoggingService has been initialized.);}onModuleDestroy() {console.log(The LoggingService is being destroyed.);}
}当模块初始化时我们在控制台打印出 The LoggingService has been initialized;当模块被销毁时则打印 The LoggingService is being destroyed.。
OnApplicationBootstrap VS BeforeApplicationShutdown
import { Injectable, BeforeApplicationShutdown, OnApplicationBootstrap } from nestjs/common;Injectable()
export class LoggingService implements BeforeApplicationShutdown, OnApplicationBootstrap {onApplicationBootstrap() {console.log(Application has fully started);}beforeApplicationShutdown(signal: string) {console.log(Received shutdown signal: ${signal});}
}onApplicationShutdown
onApplicationShutdown 方法它将在应用进行关闭之前被触发。
import { Injectable, OnApplicationShutdown } from nestjs/common;Injectable()
export class AppService implements OnApplicationShutdown {onApplicationShutdown(signal: string) {console.log(AppService is shutting down due to: , signal);}
}其中signal 参数可以获取导致应用关闭的信号类型如 SIGINT、SIGTERM 或 **SIGKILL**等。
这种方式在你需要在应用关闭前进行一些清理工作如关闭数据库连接、结束正在执行的任务或记录日志等方面特别有用。
总结
理解 NestJS 的生命周期事件以及如何处理这些事件可以帮助我们在构建大型复杂应用程序时保持代码的清晰性和组织性希望本文能够对大家有所帮助。