Maison interface Web js tutoriel Événements non-nestjs

Événements non-nestjs

Sep 04, 2024 pm 10:42 PM

Eventos no nestjs

Que sont les événements ?

Les événements sont des signaux ou des notifications qui indiquent qu'une action ou un changement d'état s'est produit. Dans le cadre des applications, les événements permettent à différentes parties du système de communiquer de manière asynchrone et découplée. Ceci est particulièrement utile dans les architectures de microservices, où vous avez besoin que les composants fonctionnent de manière indépendante tout en étant capables « d'écouter » et de réagir aux changements qui se produisent ailleurs dans le système.

Événements dans NestJS

Dans NestJS, l'implémentation des événements se fait de manière simple et intuitive à l'aide de la bibliothèque EventEmitter2, qui est une extension du EventEmitter natif de Node.js, avec plus de fonctionnalités. Voyons ensuite comment configurer et utiliser les événements dans NestJS.

Configuration des événements dans NestJS

Tout d'abord, vous devez installer le package @nestjs/event-emitter, qui offre une intégration complète d'EventEmitter2 avec NestJS :

npm install @nestjs/event-emitter

Après avoir installé le package, importez le module EventEmitterModule dans le module principal de votre application :

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

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

Une fois le module configuré, vous pouvez commencer à créer et gérer des événements dans votre application.

Création et émission d'événements

Créons un exemple de base où un événement est émis lorsqu'un nouvel utilisateur est créé.

1. Créer un événement :

Tout d'abord, nous définissons une classe pour représenter notre événement :

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

2. Émission de l'événement :

Dans le service où la logique de création d'utilisateur est implémentée, vous pouvez émettre l'événement après la création de l'utilisateur :

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);
  }
}

Ici, l'événement user.created est émis chaque fois qu'un nouvel utilisateur est créé.

Écouter et répondre aux événements

Pour réagir aux événements émis, vous pouvez créer des auditeurs, qui sont des fonctions ou des méthodes qui seront appelées lorsque l'événement correspondant sera déclenché.

1. Création d'un auditeur :

Un auditeur est une classe qui réagit à un événement spécifique :

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. Enregistrement de l'auditeur :

Pour que NestJS reconnaisse l'auditeur, il faut que celui-ci soit enregistré dans le module correspondant :

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

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

Désormais, chaque fois que l'événement user.created est émis, la méthode handleUserCreatedEvent sera appelée.

Applications événementielles avancées

Les événements peuvent être utilisés dans divers scénarios pour améliorer l'architecture des applications :

  1. Intégration avec les microservices : les événements sont un moyen efficace de communiquer entre les microservices, leur permettant de rester découplés.
  2. Traitement asynchrone : vous pouvez émettre des événements pour effectuer des opérations en arrière-plan, telles que l'envoi d'e-mails ou le traitement de grandes quantités de données.
  3. Journalisation et audit : les événements sont idéaux pour capturer les actions des utilisateurs et les événements système à des fins d'audit.

Conclusion

L'utilisation d'événements dans NestJS est un moyen puissant de créer des systèmes modulaires, évolutifs et faciles à entretenir. Grâce à l'intégration avec EventEmitter2, NestJS facilite la création, l'émission et l'écoute d'événements, vous permettant ainsi de mettre en œuvre des architectures basées sur les événements de manière simple et efficace. Que ce soit pour la communication entre microservices ou pour le traitement asynchrone, les événements sont un outil essentiel dans l'arsenal de tout développeur NestJS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Filtrage multi-conditions JavaScript: implémentation de filtrage de produit dynamique basé sur et / ou logique Filtrage multi-conditions JavaScript: implémentation de filtrage de produit dynamique basé sur et / ou logique Aug 22, 2025 am 10:00 AM

Ce tutoriel présente en détail comment utiliser JavaScript pour implémenter la fonction de filtrage dynamique multi-conditions, permettant aux utilisateurs de filtrer les produits en fonction de plusieurs attributs tels que la couleur et la taille. Grâce à une structure HTML claire et à des exemples de code JavaScript, l'article montre comment gérer de manière flexible et / ou logique pour répondre aux besoins complexes de filtrage des utilisateurs et fournit des suggestions d'optimisation.

Optimiser la gestion des événements des sauts de liaison externe dynamique dans la fenêtre contextuelle jQuery Optimiser la gestion des événements des sauts de liaison externe dynamique dans la fenêtre contextuelle jQuery Sep 01, 2025 am 11:48 AM

Cet article vise à résoudre le problème de la redirection du bouton de redirection de liaison externe dans la fenêtre pop-up jQuery provoquant des erreurs de saut. Lorsqu'un utilisateur clique sur plusieurs liens externes successivement, le bouton Jump dans la fenêtre contextuelle peut toujours pointer vers le premier lien cliqué. La solution principale consiste à utiliser la méthode OFF ('Click') pour annuler l'ancien gestionnaire d'événements avant chaque liaison d'un nouvel événement, garantissant que le comportement de saut pointe toujours vers l'URL cible, réalisant ainsi une redirection de liens précise et contrôlable.

Comment sélectionnez-vous les éléments par un attribut de données dans JavaScript? Comment sélectionnez-vous les éléments par un attribut de données dans JavaScript? Aug 30, 2025 am 01:57 AM

Vous pouvez sélectionner des éléments avec des attributs de données dans JavaScript via le sélecteur d'attribut CSS et utiliser la méthode document.QuerySelector () ou document.QuerySelectorAll () pour y parvenir. 1. Utiliser [Data-Attribute] pour sélectionner un élément avec l'attribut de données spécifié (n'importe quelle valeur); 2. Utilisez [data-attribut = "Value"] pour sélectionner un élément dont la valeur d'attribut correspond exactement; 3. Accédez à l'attribut de données via Element.Dataset, où Data-User-ID correspond à DataSet.Userid (Remplacer

Créer des compteurs JavaScript en cours d'exécution par les jours ouvrables et les heures de travail Créer des compteurs JavaScript en cours d'exécution par les jours ouvrables et les heures de travail Aug 31, 2025 am 06:30 AM

Cet article détaille comment créer un compteur de synchronisation précis à l'aide de JavaScript. Le comptoir est incrémenté une fois par minute, mais ne se déroule que dans les jours ouvrables prédéfinis (du lundi au vendredi) et les heures de travail (comme 6 h à 20 h). Il peut interrompre les incréments pendant les heures de travail, mais afficher la valeur actuelle et réinitialiser automatiquement le premier jour de chaque mois, assurant la précision et la flexibilité de la logique de comptage.

Pytest et sélénium: stratégies de mise en œuvre pour les tests dynamiques basés sur les données Pytest et sélénium: stratégies de mise en œuvre pour les tests dynamiques basés sur les données Aug 30, 2025 am 06:00 AM

Cet article vise à résoudre le problème selon lequel le décorateur de @ pytest.mark.Marametrise ne peut pas gérer directement les données générées lors de l'exécution lors de l'utilisation de PyTest et du sélénium pour des tests dynamiques basés sur les données. Nous explorerons les limites de pytest.mark.Parametrize en profondeur et introduirons en détail comment implémenter gracieusement les tests paramétrés en fonction de l'acquisition de données dynamiques de sélénium via la fonction de crochet Pytest_GenEReate_tests de Pytest pour assurer la flexibilité et l'efficacité des cas de test.

Optimiser le rendu des composants React: résoudre les problèmes de sur-rendu causés par le plan de la souris Optimiser le rendu des composants React: résoudre les problèmes de sur-rendu causés par le plan de la souris Aug 22, 2025 pm 01:36 PM

Cet article vise à résoudre les problèmes de sur-rendu déclenchés par OnMouseOver dans les applications React. En remplaçant OnMouseover par OnMouseEnter et combiné avec OnMouseout par OnMouseleave, vous pouvez réduire considérablement la rediffusion des composants inutile et améliorer les performances de l'application, en particulier lorsque vous traitez un grand nombre de composants. L'article fournira un exemple de code et des explications détaillées pour aider les développeurs à comprendre et à appliquer cette technique d'optimisation.

JS obtient la hauteur et la largeur d'un élément JS obtient la hauteur et la largeur d'un élément Aug 22, 2025 pm 04:16 PM

UseclientWidth / ClientHeightForvisibleContentAreAncludepadding; 2. UseOffsetWidth / OffsetheightFortTOrAnderedSize ye

Comment les éléments DOM créés dynamiquement sont accessibles et exploités par des scripts préchargés Comment les éléments DOM créés dynamiquement sont accessibles et exploités par des scripts préchargés Aug 30, 2025 am 11:57 AM

Cet article explore comment les scripts JavaScript peuvent être effectivement accessibles et manipulés lorsqu'ils sont chargés et exécutés avant la création d'éléments DOM dans le développement Web. Nous présenterons trois stratégies de base: passer directement les références d'élément via des valeurs de retour de fonction, en utilisant des événements personnalisés pour réaliser une communication intermodule et en utilisant MutationObserver pour écouter les changements de structure DOM. Ces méthodes peuvent aider les développeurs à résoudre les défis entre le synchronisation de l'exécution JavaScript et le chargement dynamique du contenu, garantissant que le script peut fonctionner correctement des éléments ajoutés par la suite, tels que les rendre glisserables.

See all articles