用于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 staging
, process.argv[2]
从NODE.JS命令行获得2.argument,因此它正在“升级”。
请有人可以解释这些代码片段?
第一部分是定义configuration对象。 然后它输出该对象。
当您从另一个文件/代码调用此模块时,您可以将可变mode
传递给该模块。 所以如果你从另一个文件中调用这个模块,你可以这样做:
var config = require('/config/index.js')('staging');
这样做,你会传递这个词/string'staging'
到variablesmode
这基本上是相同的return config.staging;
,或者返回config ['staging']来教学。
||
链条基本上就像你说的。 如果第一个是虚假的,它将会进入下一个。 所以,如果mode
是undefined
,接下来是process.argv[2]
,这意味着它将在应用程序被调用时寻找额外的命令。 像$ node index staging
。 这将产生与上面解释的相同的结果。
如果这两个都没有定义,那么local
将是默认的! 作为一种安全措施:如果configuration对象没有名为local的属性,或者它的空值,它将默认为config.local
。 这没有什么意义,除非configuration对象不同或者可以在您发布的代码示例之外进行更改。 否则它的还原剂,重复的最后一个