用于configuration应用程序的node.js命令行脚本

文件:/config/index.js;

var config = { local: { mode: 'local', port: 3000 }, staging: { mode: 'staging', port: 4000 }, production: { mode: 'production', port: 5000 } } module.exports = function(mode) { return config[mode || process.argv[2] || 'local'] || config.local; } 

file:app.js;

 ... var config = require('./config')(); ... http.createServer(app).listen(config.port, function(){ console.log('Express server listening on port ' + config.port); }); 

config[mode || process.argv[2] || 'local'] || config.local;的含义是什么? config[mode || process.argv[2] || 'local'] || config.local;

我知道的 ;
1) || 意思是“或”。 2)当我们进入terminalnode app.js stagingprocess.argv[2]从NODE.JS命令行获得2.argument,因此它正在“升级”。

请有人可以解释这些代码片段?

第一部分是定义configuration对象。 然后它输出该对象。

当您从另一个文件/代码调用此模块时,您可以将可变mode传递给该模块。 所以如果你从另一个文件中调用这个模块,你可以这样做:

 var config = require('/config/index.js')('staging'); 

这样做,你会传递这个词/string'staging'到variablesmode这基本上是相同的return config.staging; ,或者返回config ['staging']来教学。

|| 链条基本上就像你说的。 如果第一个是虚假的,它将会进入下一个。 所以,如果modeundefined ,接下来是process.argv[2] ,这意味着它将在应用程序被调用时寻找额外的命令。 像$ node index staging 。 这将产生与上面解释的相同的结果。

如果这两个都没有定义,那么local将是默认的! 作为一种安全措施:如果configuration对象没有名为local的属性,或者它的空值,它将默认为config.local 。 这没有什么意义,除非configuration对象不同或者可以在您发布的代码示例之外进行更改。 否则它的还原剂,重复的最后一个