node.js - 在 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')
}
解决方案
我想出了这个问题的答案,以防有人去寻找它。
app.listen 实际上是一个包装函数,它调用HTTP.createServer
.
据我所知createServer
,在事件循环上设置了一个事件侦听器。当操作系统在被监听的特定端口(例如端口 80)上收到 HTTP 请求时,req 会被 express 处理。
由于createServer
是异步操作,因此一旦执行主程序,它就会在事件循环中执行。因此,此代码的放置位置无关紧要。在大多数示例中,它最后作为标准而不是技术要求。
推荐阅读
- typescript - 如何避免在打字稿中出现“for...in”字样
- ruby-on-rails - 名称属性即将到来 Nil?
- lte - 如何访问 .qmdl 日志文件的配置?
- php - 无法使用 Laravel 处理 ajax 中的表单字段
- php - 如何使用 php 显示 woocommerce 购物车,但通过添加图标和更改文本对其进行自定义
- java - 无法删除/删除多个评论,在第一个评论后我必须退出然后重新进入活动以使其他评论消失
- javascript - 按下 Enter 键时选择内容可编辑 div 的元素
- mongodb - Why does this not raise a compilation error? (Mongoose, Typescript, MongoDB)
- reactjs - 酶模拟更改输入不会更改 React Hooks 上的值
- python - 如何返回函数中标识的结果计数?(真假)