Javascript 使用侦听器的良好实践

Javascript 使用侦听器的良好实践,javascript,node.js,express,mongoose,listener,Javascript,Node.js,Express,Mongoose,Listener,最近,我开始编写简单的服务器,接收电子邮件并将其保存到数据库中。我希望拆分代码以使其更具可读性和可维护性,因此我提出了这样的结构: class MyEmitter extends EventEmitter {} const listener = new MyEmitter(); databaseHandlerInit(listener); emailHandlerInit(listener); requestsHandlerInit(listener); 数据库处理程序正在连接数据库、保存、

最近,我开始编写简单的服务器,接收电子邮件并将其保存到数据库中。我希望拆分代码以使其更具可读性和可维护性,因此我提出了这样的结构:

class MyEmitter extends EventEmitter {}
const listener = new MyEmitter();

databaseHandlerInit(listener);
emailHandlerInit(listener);
requestsHandlerInit(listener);
数据库处理程序正在连接数据库、保存、修改数据。电子邮件处理程序负责接收和发送电子邮件,请求处理程序是express服务器

我很好奇这样的事情是否被认为是“糟糕的编程实践”:


侦听器正在向处理数据库内容的databaseHandlerInit发出事件。它工作得很好,因为侦听器在其本地作用域中有mongoose对象
emailHandlerInit
的工作方式与此相同。我觉得可以做得更好,更专业。你的想法是什么?

让我们开始解释一下你为什么得出结论事件才是正确的选择here@Itamar正如我所说,databaseHandler中的侦听器可以访问函数的本地范围,这意味着它可以访问当前连接的数据库方法。请澄清为什么不想直接调用这些方法?@Itamar如果这些方法在不同函数的本地范围内,我如何直接调用它们?我想把我的server.js代码分成更小的块,而不是将所有代码都写在一个文件中。这就是为什么我甚至使用了侦听器,以使代码更具可读性
// requestsHandler
router.post("/api", (req, res) => {
 listener.emit("doSomethingInDatabase", req, res);
});