node.js 如何完美的从命令行接收参数所传递进来的值

比如在很多php py 文件中!都会从命令行接受参数的值并带入程序中!
我也想用node.js这么写 我目前是这样写的 感觉太费劲了!

var options = process.argv;
for(var i=0;i<canshu.length;i++)
{
    if(options[i].indexOf("-string")==0)
  {
        。。。。。
  }
    else if(options[i].indexOf("--start")==0)
  {
    ........
  }
}

感觉这样好费劲 有什么更加好一点的方法没?

阅读 50.5k
评论
    5 个回答

    注意在下面的程序是不可少的。 @0x_Jin 你看看这篇文章的写法
    http://witcheryne.iteye.com/blog/1196170

    #!/usr/bin/env node
    
    var program = require('commander');
    
    function range (val) {
        return val.split('..').map(Number);
    }
    
    function list (val) {
        return val.split(',')
    }
    
    //定义参数,以及参数内容的描述
    program
        .version('0.0.1')
        .usage('[options] [value ...]')
        .option('-m, --message <string>', 'a string argument')
        .option('-i, --integer <n>', 'input a integet argument.', parseInt)
        .option('-f, --float <f>', 'input a float arg', parseFloat)
        .option('-l, --list <items>', 'a list', list)
        .option('-r, --range <a>..<b>', 'a range', range)
    
    //添加额外的文档描述
    program.on('help', function() {
        console.log('   Examples:')
        console.log('')
        console.log('       # input string, integer and float')
        console.log('       $ ./nodecmd.js -m \"a string\" -i 1 -f 1.01')
        console.log('')
    
        console.log('       # input range 1 - 3')
        console.log('       $ ./nodecmd.js -r 1..3')
        console.log('')
    
        console.log('       # input list: [1,2,3]')
        console.log('       $ ./nodecmd.js -l 1,2,3')
        console.log('')
    });
    
    //解析commandline arguments
    program.parse(process.argv)
    
    //输出结果
    console.info('--messsage:')
    console.log(program.message);
    
    console.info('--integer:')
    console.log(program.integer)
    
    console.info('--range:')
    console.log(program.range)
    
    console.info('--list:')
    console.log(program.list)
    
      相似问题
      推荐文章