首页 > 解决方案 > 在 Express JS 中 app.listen 是否需要位于文件末尾?

问题描述

在大多数使用 Express JS 的教程中,app.listen 函数总是添加在文件的末尾。我想了解这是否必不可少,因为所有中间件都是按顺序运行的。

大多数例子表明:

const express = require('express)
const app = express()

app.get('/', (req, res) => {
  res.send('Test')
}

app.listen(3000, () => {
  console.log('Server running on port 3000')
}

有什么理由不应该这样做:

const express = require('express)
const app = express()

app.listen(3000, () => {
  console.log('Server running on port 3000')
}

app.get('/', (req, res) => {
  res.send('Test')
}

标签: node.jsexpress

解决方案


我想出了这个问题的答案,以防有人去寻找它。

app.listen 实际上是一个包装函数,它调用HTTP.createServer.

据我所知createServer,在事件循环上设置了一个事件侦听器。当操作系统在被监听的特定端口(例如端口 80)上收到 HTTP 请求时,req 会被 express 处理。

由于createServer是异步操作,因此一旦执行主程序,它就会在事件循环中执行。因此,此代码的放置位置无关紧要。在大多数示例中,它最后作为标准而不是技术要求。


推荐阅读