快递js事件清单?

时间:2016-11-30 23:42:27

标签: javascript node.js express

我试图在官方文档中找到但没有找到明确的事件列表。

是否有像'route-matched'这样的事情,所以我可以app.on('route-matched', () => {})

编辑:在官方页面中,有mount事件,在父应用上安装支持应用时调用。除此之外,没有链接没有信息在哪里可以找到支持的事件。

4 个答案:

答案 0 :(得分:1)

看过文档后,我找到了

mount

,没有别的。

查看源代码,除了一次调用以发出所述mount事件之外,我找不到任何其他内容。代码库并非那么大,虽然也许某些依赖项本身就是事件发射器,它们会执行你可能会听到的事情,尽管我认为它们中的大多数都不会被暴露。

所以我想我所说的是你在文档中找到了唯一的事件列表,因为只有一个事件是从Express发出的。

那就是说,我很好奇你为什么要听一条匹配的路线?附加到该路由的中间件会在匹配时触发,因此这就像您想要的那样是一个听众。

答案 1 :(得分:1)

也许您参考Nodejs的http.ServerResponse事件?

Express js docs中所述:

  

res对象是Node自己的响应对象的增强版本,支持所有内置字段和方法。

然后在Node js docs

  

类:http.ServerResponse:

     
      
  • 活动:'关闭'
  •   
  • 活动:'完成'
  •   

答案 2 :(得分:1)

我使用以下命令创建了一个准系统应用程序:

 npm install -g express-generator
 express myExpressApp --view pug

这会生成(除其他外)一个名为 bin/www 的文件,其中包含以下几行:

server.listen(port)
server.on('error', onError);
server.on('listening', onListening);

...

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('listening on ' + bind);
}

使用 VS Code,我在 onListening 函数的开头放置了一个断点。当我开始调试应用程序时,我能够查看触发 listening 事件的代码。我找到了一个名为 <node_internals> net.js 的脚本,其中包含对 emit 以下事件的调用:

  • '连接'

  • '连接'

  • '关闭'

  • '错误'

  • '倾听'

  • '查找'

  • '准备好'

  • '超时'

可以在 Node.js Documentation for Net 中找到这些(和其他)事件的详细信息。

mount 事件在文件 node_modules/express/lib/application.js 中生成,这或许可以解释为什么它是 ExpressJS 唯一明确记录的事件,尽管可以训练您的 express 应用程序对象处理其他应用程序对象.

mount

虽然没有比 route-matched 事件更像的东西...但我想现在您已经找到了解决方法:)

答案 3 :(得分:-1)

也许是https://nodejs.org/api/http.html的超集

但是,这样做更安全

const server = app.listen(process.env.PORT)  // server is an instance of http.Server
server.on('close', callback)