file:/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;
的含义是什么。
我所知道的;
1)||
表示"或"。
2)当我们在终端node app.js staging
上输入时,process.argv[2]
从NODE.JS命令行获得2.argument,因此它是" staging"。
答案 0 :(得分:2)
第一部分是定义配置对象。然后它导出该对象。
当您从其他文件/代码调用此模块时,您可以将变量mode
传递给该模块。因此,如果您从另一个文件中调用此模块,您可以执行以下操作:
var config = require('/config/index.js')('staging');
这样做你将把这个单词/ 'staging'
传递给变量mode
,它基本上与return config.staging;
相同,或者返回config ['staging']来教学
||
链基本上就像你说的那样。如果第一个是假的,它将转到下一个。因此,如果mode
是undefined
,则下一个是process.argv[2]
,这意味着它将查找调用应用时给出的额外命令。像$ node index staging
一样。这将产生与上述相同的结果。
如果没有定义这两个,local
将是默认值!
并且作为安全措施:如果配置对象没有名为local的属性,或者为空,则默认为config.local
。这没有多大意义,除非配置对象不同或者可以在您发布的代码示例之外进行更改。否则它的还原剂,重复最后or