Módulo Node.js Events
Node.js es un entorno de ejecución de JavaScript basado en eventos, yeventsel módulo events es el núcleo de Node.js para implementar la arquitectura dirigida por eventos. Permite a los desarrolladores crear, emitir y escuchar eventos personalizados, logrando así una estructura de código débilmente acoplada.
En términos simples,eventsel módulo events proporciona un mecanismo que permite que diferentes partes (objetos) se comuniquen entre sí sin necesidad de llamar directamente a los métodos de las demás.
Conceptos fundamentales
Clase EventEmitter
eventsEl núcleo del módulo esEventEmitterla clase EventEmitter; casi todos los objetos de Node.js que pueden emitir eventos heredan de esta clase.
Ejemplo
Uso básico
1. Crear una instancia de EventEmitter
2. Emitir el evento
console.log('¡El evento se ha disparado!');
});
Explicación detallada de los métodos comunes
on(eventName, listener)
Agrega un listener al final del arreglo de listeners del evento especificado.
Ejemplo
console.log(`Hello, ${name}!`);
});
myEmitter.emit('greet', 'Alice'); // Salida: Hello, Alice!
once(eventName, listener)
Agrega un listener de una sola vez; este listener se disparará como máximo una vez.
Ejemplo
console.log('¡Bienvenido a tu primera visita!');
});
myEmitter.emit('welcome'); // Salida: ¡Bienvenido a tu primera visita!
myEmitter.emit('welcome'); // No se imprimirá
emit(eventName[, ...args])
Llama sincrónicamente a cada listener registrado para el evento especificado, ejecutándolos en el orden de registro.
Ejemplo
console.log(a + b);
});
myEmitter.emit('sum', 2, 3); // Salida: 5
removeListener(eventName, listener)
Elimina un listener del arreglo de listeners del evento especificado.
Ejemplo
myEmitter.on('event', callback);
myEmitter.removeListener('event', callback);
removeAllListeners([eventName])
Elimina todos los listeners o todos los listeners del evento especificado.
Ejemplo
Características avanzadas
Manejo de errores
Las instancias de EventEmitter manejan de manera especial el evento 'error'. Si no hay ningún listener registrado para el evento 'error', cuando se emite dicho evento, se lanza un error y el proceso de Node.js sale.
Ejemplo
console.error('Ocurrió un error:', err.message);
});
myEmitter.emit('error', new Error('¡Algo salió mal!'));
Obtener información del listener
Ejemplo
myEmitter.listenerCount('event');
// Obtener el arreglo de listeners del evento especificado
myEmitter.listeners('event');
Establecer el número máximo de listeners
De forma predeterminada, cada evento puede registrar hasta 10 listeners; si se supera esta cantidad, se emite una advertencia.
Ejemplo
Ejemplo de aplicación práctica
Crear una clase de eventos personalizada
Ejemplo
class MyClass extends EventEmitter {
constructor() {
super();
this.value = 0;
}
increment() {
this.value++;
this.emit('incremented', this.value);
}
}
const myInstance = new MyClass();
myInstance.on('incremented', (value) => {
console.log('Valor incrementado a:', value);
});
myInstance.increment(); // Salida: Valor incrementado a: 1
myInstance.increment(); // Salida: Valor incrementado a: 2
Implementar un bus de eventos simple
Ejemplo
class EventBus extends EventEmitter {}
const bus = new EventBus();
// Componente A
bus.on('message', (msg) => {
console.log('Componente A recibió:', msg);
});
// Componente B
bus.emit('message', 'Hello from B');
Mejores prácticas
- Convención de nombresEvitar fugas de memoria
- Manejo de erroresUso moderado
- ResumenEl módulo events de Node.js
- es la base de la programación dirigida por eventos; a través de laclase EventEmitter, podemos crear y gestionar fácilmente eventos personalizados. Dominar este módulo es esencial para desarrollar aplicaciones Node.js eficientes y desacopladas. Desde mecanismos simples de notificación hasta arquitecturas de aplicación complejas,
Resumen
Módulos integrados de Node.jseventsOtras extensionesEventEmitterIA pensando...eventsMódulo Node.js querystring
Módulos integrados de Node.js