EventEmitter:所有的EventEmitters在添加新的监听器时发出 “newListener “事件,在删除现有的监听器时发出 “removeListener “事件。它是由事件模块定义和暴露的。
要导入EventEmitter,使用以下导入语句 –

const EventEmitter = require('events');

NodeEventTarget: EventTargetEvent对象是EventTarget Web API的Node.js特定实现,该API由一些Node.js核心API暴露。

EventEmitter和NodeEventTarget之间的区别 –

事件发射器 节点事件目标
事件发射器继承自JavaScript的事件模块。 节点事件目标是EventEmitter API的一个修改的子集,并继承于它。
事件发射器实现了与事件模块的is-a关系。 节点事件目标实现了与EventTarget API的is-a关系。
在EventEmitter中,对于同一个事件,可以允许多个监听器被注册。 任何监听器都可以为每个事件类型注册一次,如果试图多次注册一个监听器,它会被忽略。
事件发射器模拟了大部分的事件,如’error’、’Classes’、Emits等。 节点事件目标不模拟完整的EventEmitter APIs,如prependListener(), prependOnceListener(), rawListeners()等等。
事件发射器的默认行为是记录信息并结束当前的执行。 对于 “错误 “类型的事件,它没有实现任何默认行为。
如果在EventEmitter实例中发生错误,那么典型的行为是发出一个 “错误 “事件。 节点事件目标支持EventListener对象和函数作为所有事件类型的处理程序。
所有的EventEmitter在添加新的监听器时发出 “newListener “事件,在移除监听器时发出 “removeListener “事件。 节点事件目标不是EventEmitter的一个实例,在大多数情况下,它不能代替EventEmitter使用。