"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الأحداث في Nestjs

الأحداث في Nestjs

تم النشر بتاريخ 2024-11-08
تصفح:160

Eventos no nestjs

ما هي الأحداث؟

الأحداث هي إشارات أو إشعارات تشير إلى حدوث إجراء أو تغيير في الحالة. في سياق التطبيقات، تسمح الأحداث لأجزاء مختلفة من النظام بالتواصل بطريقة غير متزامنة ومنفصلة. يعد هذا مفيدًا بشكل خاص في بنيات الخدمات الصغيرة، حيث تحتاج إلى مكونات لتعمل بشكل مستقل ولكن لا تزال قادرًا على "الاستماع" والتفاعل مع التغييرات التي تحدث في مكان آخر في النظام.

الأحداث في NestJS

في NestJS، يتم تنفيذ الأحداث بطريقة بسيطة وبديهية باستخدام مكتبة EventEmitter2، وهي امتداد لـ Node.js EventEmitter الأصلي، مع المزيد من الميزات. بعد ذلك، دعونا نرى كيفية تكوين واستخدام الأحداث في NestJS.

تكوين الأحداث في NestJS

أولاً، تحتاج إلى تثبيت الحزمة @nestjs/event-emitter، والتي توفر التكامل الكامل بين EventEmitter2 وNestJS:

npm install @nestjs/event-emitter

بعد تثبيت الحزمة، قم باستيراد وحدة EventEmitterModule إلى الوحدة الرئيسية لتطبيقك:

import { Module } from '@nestjs/common';
import { EventEmitterModule } from '@nestjs/event-emitter';

@Module({
  imports: [
    EventEmitterModule.forRoot(), // Importando o EventEmitterModule
    // outros módulos
  ],
})
export class AppModule {}

مع تكوين الوحدة، يمكنك البدء في إنشاء الأحداث والتعامل معها في تطبيقك.

إنشاء وإصدار الأحداث

لنقم بإنشاء مثال أساسي حيث يتم إصدار حدث عند إنشاء مستخدم جديد.

1. إنشاء حدث:

أولاً، نحدد فئة لتمثيل حدثنا:

export class UserCreatedEvent {
  constructor(
    public readonly userId: string,
    public readonly email: string,
  ) {}
}

2. انبعاث الحدث:

في الخدمة التي يتم فيها تنفيذ منطق إنشاء المستخدم، يمكنك إرسال الحدث بعد إنشاء المستخدم:

import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { UserCreatedEvent } from './events/user-created.event';

@Injectable()
export class UserService {
  constructor(private readonly eventEmitter: EventEmitter2) {}

  async createUser(email: string) {
    // Lógica para criar o usuário
    const userId = '12345'; // Exemplo de ID gerado

    // Emitir o evento
    const event = new UserCreatedEvent(userId, email);
    this.eventEmitter.emit('user.created', event);
  }
}

هنا يتم إطلاق الحدث user.created كلما تم إنشاء مستخدم جديد.

الاستماع والرد على الأحداث

للرد على الأحداث المنبعثة، يمكنك إنشاء مستمعين، وهي وظائف أو أساليب سيتم استدعاؤها عند تشغيل الحدث المقابل.

1. إنشاء مستمع:

المستمع هو فئة تتفاعل مع حدث معين:

import { OnEvent } from '@nestjs/event-emitter';
import { Injectable } from '@nestjs/common';
import { UserCreatedEvent } from './events/user-created.event';

@Injectable()
export class UserCreatedListener {
  @OnEvent('user.created')
  handleUserCreatedEvent(event: UserCreatedEvent) {
    console.log('Usuário criado com sucesso:', event.userId, event.email);
    // Lógica adicional, como enviar um e-mail de boas-vindas
  }
}

2. تسجيل المستمع:

لكي يتعرف NestJS على المستمع، يجب تسجيله في الوحدة المقابلة:

import { Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserCreatedListener } from './listeners/user-created.listener';

@Module({
  providers: [UserService, UserCreatedListener],
})
export class UserModule {}

الآن، في كل مرة يتم فيها إطلاق الحدث user.created، سيتم استدعاء الأسلوب HandleUserCreatedEvent.

تطبيقات الأحداث المتقدمة

يمكن استخدام الأحداث في سيناريوهات مختلفة لتحسين بنية التطبيق:

  1. التكامل مع الخدمات الصغيرة: الأحداث هي وسيلة فعالة للتواصل بين الخدمات الصغيرة، مما يسمح لها بالبقاء منفصلة.
  2. المعالجة غير المتزامنة: يمكنك إرسال أحداث لإجراء عمليات في الخلفية، مثل إرسال رسائل البريد الإلكتروني أو معالجة كميات كبيرة من البيانات.
  3. التسجيل والتدقيق: تعتبر الأحداث مثالية لتسجيل إجراءات المستخدم وأحداث النظام لأغراض التدقيق.

خاتمة

يعد استخدام الأحداث في NestJS طريقة قوية لإنشاء أنظمة معيارية وقابلة للتطوير وسهلة الصيانة. من خلال التكامل مع EventEmitter2، يسهّل NestJS إنشاء الأحداث وبثها والاستماع إليها، مما يسمح لك بتنفيذ بنيات تعتمد على الأحداث ببساطة وفعالية. سواء كان ذلك للتواصل بين الخدمات الصغيرة أو للمعالجة غير المتزامنة، تعد الأحداث أداة أساسية في ترسانة أي مطور في NestJS.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rafael_avelarcampos_e71c/eventos-no-nestjs-131j?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3