1. 介绍
Node.js是一种基于Chrome JavaScript V8引擎的JavaScript运行时,使JavaScript可以在服务端运行。使用Node.js可以方便地操作命令行参数。
2. 如何获取命令行参数
Node.js提供了process.argv数组来获取命令行参数。process.argv数组包含了一个脚本执行时的命令行参数。
console.log(process.argv);
我们运行以上代码,命令行输出会包含以下内容:
$ node app.js one two=three four
// process.argv数组
[
'/usr/local/bin/node',
'/Users/mjr/work/node/process-args.js',
'one',
'two=three',
'four'
]
其中,process.argv[0]是Node.js可执行文件的路径,process.argv[1]是当前执行的JavaScript文件的路径,其他的项是命令行参数。
2.1 获取特定命令行参数
如果你只需要获取特定的命令行参数,可以使用process.argv数组中的下标。例如,如果你想获取第三个参数,可以使用以下代码:
console.log(process.argv[2]);
以上代码将输出process.argv数组中的第三项。
2.2 获取命令行参数对象
如果你希望以键值对的方式获取命令行参数,可以使用npm包yargs。安装yargs:
npm install yargs
使用yargs获取命令行参数:
const argv = require('yargs').argv;
console.log(argv);
在命令行中运行以下命令:
$ node app.js --name=myname --age=20
以上代码将输出以下结果:
{ _: [], name: 'myname', age: 20, '$0': 'app.js' }
yargs将返回一个对象,对象的键值对对应命令行参数。
由于process.argv是一个数组,因此该数组可以手动被解析以获取相同的信息。但是,yargs包的好处在于,它为你提供了一个简洁的方式来获取相同的信息,并且它自动解析数组,将你的命令行参数转换成对象。
2.3 获取默认命令行参数
有时候在程序能够被执行之前需要检查某些命令行参数是否已经在命令行上被定义。您可以使用"default"选项,以确保命令行参数被正确地定义在对象中。
const argv = require('yargs')
.default('message', 'hello world')
.argv;
console.log(argv);
如果用户未在命令行中指定消息选项,则Yargs将默认值作为选项的值:
$ node app.js
{ _: [], message: 'hello world', '$0': 'app.js' }
3. 总结
Node.js提供了process.argv数组用于获取命令行参数。如果你只需要获取特定的命令行参数,可以使用process.argv数组中的下标来获取参数。如果你想以键值对的方式获取命令行参数,可以使用npm包yargs。yargs将自动将命令行参数转换成对象。