Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用app.set()和app.get()有什么目的吗?_Javascript_Express - Fatal编程技术网

Javascript 使用app.set()和app.get()有什么目的吗?

Javascript 使用app.set()和app.get()有什么目的吗?,javascript,express,Javascript,Express,我可以硬编码吗 app.set('port', (process.env.PORT || 3000)); const server = app.listen(app.get('port'), () => { console.log('Server|Port: ', app.get('port')); }); 相反,这样做更具可读性 const port = process.env.PORT || 3000; const server = app.listen(port,

我可以硬编码吗

app.set('port', (process.env.PORT || 3000));

const server = app.listen(app.get('port'), () => {
  console.log('Server|Port: ', app.get('port'));
});
相反,这样做更具可读性

const port = process.env.PORT || 3000;      
const server = app.listen(port, () => {
  console.log('Server|Port: ', port);
});
app.set和app.get只是在app对象中存储自定义属性的方法,不会与对象上的内置属性发生冲突。因此,您可以将其用于任何应用程序级存储

您可以使用以下任一选项自由存储您选择的端口:

app.set(port, process.env.PORT || 3000) 
然后用

app.get('port')
或者您可以使用其他选项:

const port = process.env.PORT || 3000;
两种方法都可以。使用哪种编码完全是个人的选择。就个人而言,我会使用const-port=xxxx,因为在服务器启动后,其他代码通常不需要该端口

使用app.set和app.get是否有目的


app.get的主要好处是,任何具有app对象的代码都可以访问该属性,因此它是存储应用程序级数据的一种方便方法,其中许多代码(如所有路由处理程序)都可以轻松访问该属性,即使它们分散到许多其他模块中。就端口号而言,这通常不是许多其他代码需要访问的,因此我个人将其放在一个局部变量中并在那里使用。

这是一个很好的答案,但您能给我一个应用程序级数据的示例吗。我正在用我的快速技能处理数据,但还不需要应用程序级数据。@rebeccakan-一些示例可能是应用程序级状态,如调试标志、日志记录级别、应用程序级缓存、数据库引用、socket.io引用、外部服务的api键等。我将这些内容划分为单个文件。也许随着我的应用程序变得越来越复杂,我会发现它的用处。