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

时间:2014-11-13 11:39:19

标签: javascript node.js

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"。

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

1 个答案:

答案 0 :(得分:2)

第一部分是定义配置对象。然后它导出该对象。

当您从其他文件/代码调用此模块时,您可以将变量mode传递给该模块。因此,如果您从另一个文件中调用此模块,您可以执行以下操作:

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

这样做你将把这个单词/ 'staging'传递给变量mode,它基本上与return config.staging;相同,或者返回config ['staging']来教学

||链基本上就像你说的那样。如果第一个是假的,它将转到下一个。因此,如果modeundefined,则下一个是process.argv[2],这意味着它将查找调用应用时给出的额外命令。像$ node index staging一样。这将产生与上述相同的结果。

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