실제 프로젝트에서 Node.js Event Emitter를 사용하는 이유와 방법은 무엇입니까?
5271 단어 webdeveventdrivenjavascriptnode
옵저버 패턴과 이벤트 이미터
관찰자 패턴은 상태가 변경될 때 일련의 관찰자(또는 청취자)에게 알릴 수 있는 개체(주체라고 함)를 정의합니다.
리스너를 배열에 등록 및 저장하고 어떤 일이 발생할 때 호출할 수 있는 클래스를 사용하여 OOP에서 구현할 수 있습니다.
Node.js에서는 내장 모듈
events
에서 가져온 EventEmitter 클래스를 사용하여 구현할 수 있습니다. 이벤트를 내보내고 수신할 수 있습니다(여러 리스너 포함).EventEmitter는 이벤트 코어 모듈에서 내보내집니다.
const { EventEmitter } = require("events");
const emitter = new EventEmitter();
EventEmitter의 필수 메서드는 다음과 같습니다.
on(event, listener)
: 이 방법을 사용하면 지정된 이벤트 유형(문자열)에 대한 새 수신기(함수)를 등록할 수 있습니다. once(event, listener)
: 이 메소드는 새 리스너를 등록한 다음 이벤트가 처음 발생한 후 제거됩니다. emit(event, [arg1], [...])
: 이 메소드는 새 이벤트를 생성하고 수신기에 전달할 추가 인수를 제공합니다. removeListener(event, listener)
: 이 메소드는 지정된 이벤트 유형에 대한 수신기를 제거합니다. EventEmitter를 사용하는 경우
백엔드 프로젝트에서 사용할 수 있으며 제가 사용한 실제 예는 다음과 같습니다. LMS에서 교사가 새 수업을 게시할 때 교사를 구독하는 모든 학생에게 이메일과 알림을 보내야 하므로 우리는 수업 게시 요청에 해당 코드를 삽입하여 교사가 성공 응답을 얻기 위해 이메일 및 알림이 전송될 때까지 기다리지 않고 이메일 및 알림 부분에서 게시 논리를 분리하여 분리를 달성하여 깨끗한 코드를 갖도록 합니다. 우려 원칙.
또 다른 예는 실시간 대시보드를 업데이트해야 하거나 신규 사용자가 가입할 때 투자자에게 알림을 보내야 하는 경우입니다.
실제 프로젝트에서 EventEmitter를 사용하는 방법
이 폴더 구조를 만듭니다.
/events
/subscribers
/lessons.subscriber.js
/users.subscriber.js
/emitter.js
/index.js
/emitter.js
에서:새 EventEmitter를 만들고 내보냅니다.
const { EventEmitter } = require("events");
module.exports = new EventEmitter();
/index.js
에서생성된 EventEmitter를 가져오고 이벤트 이름과 함께 내보냅니다.
const EventEmitter = require("./emitter");
module.exports = {
EventEmitter,
events: {
LESSON_PUBLISHED: "LESSON_PUBLISHED",
NEW_SIGNUP: "NEW_SIGNUP"
}
};
다른 파일에서 이벤트 이름을 분리할 수도 있지만 그럴 필요는 없습니다.
subscribers/users.subscriber.js
에서:이벤트와 EventEmitter 인스턴스를 가져오고 이벤트를 수신합니다.
const { events, EventEmitter } = require("../");
EventEmitter.on(events.NEW_SIGNUP, user => {
// Your logic
}
이제 리스너 부분이 끝났습니다. 컨트롤러 또는 서비스에서 EventEmitter 인스턴스를 가져올 수 있고 이벤트 이름은 이벤트를 내보내고 다음과 같이 원하는 데이터를 전달할 수 있습니다.
EventEmitter.emit(events.NEW_SIGNUP, user);
이 기사가 마음에 드셨기를 바랍니다. 더 많은 정보를 원하시면 블로그를 팔로우하세요.
Reference
이 문제에 관하여(실제 프로젝트에서 Node.js Event Emitter를 사용하는 이유와 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amrelmohamady/why-and-how-to-use-the-the-nodejs-event-emitter-in-real-projects-32kd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)