为什么每个人都将端口存储为快速变量?

Che*_*hev 4 javascript variables node.js express

大多数人,甚至是快速命令行工具生成的脚手架,都是这样做的:

app.set(process.env.PORT || 3000);
...
...
...
http.createServer(app).listen(app.get('port'), ...);
Run Code Online (Sandbox Code Playgroud)

为什么?当这个工作正常并且代码较少时,对我来说似乎是多余的:

http.createServer(app).listen(process.env.PORT || 3000, ...);
Run Code Online (Sandbox Code Playgroud)

我确定有一个原因,我似乎无法看到它是什么.

Pet*_*ons 5

app.set('port', process.env.PORT || 3000)亲自,我不使用.我同意你的直觉,认为这样做是不必要的.我相信,由于错误地认为应用程序的其他部分需要访问端口值而引发了这种情况.我能看到的唯一现实用例是希望您的测试代码能够访问该端口.因此,在这种情况下,它可能没问题,但通常需要访问端口的代码通常(但并非总是)被误导,至少基于我已经看到的代码库并且通常知道Web堆栈如何连接.我怀疑许多善意的人基于模糊的"这在某些方面可能有用"概念来做到这一点.

如果您的代码库的其他部分确实需要这样做app.get('port'),那么它有一个好处,它不需要复制逻辑以回退到默认值.因此,将配置处理和默认代码保存在一个位置是个好主意,并且保持应用程序中使用process.env集中式和最小化的代码量也是一件好事.特别是对于快速端口值,采用已经处理全局的环境变量并将其复制到app对象中似乎充其量是可疑的.