Node.js 是一个基于事件的开源异步 I/O 框架,它使用 Google 的 V8 JavaScript 引擎。 我们使用它来开发在服务器端和客户端都使用 JavaScript 的应用程序。 Node.js 应用程序是用 JavaScript 编写的。
Node.js 应用程序也像任何其他编程语言一样接受命令行参数。 默认情况下,Node.js 能够处理你的参数,但如果你想要一些额外的功能,那么你可以使用第三方工具和包,如 yargs
和 minimist
. 在本文中,我们将看到如何使用 Node.js 解析命令行参数 process.argv
, yargs
, 和 minimist
.
什么是命令行参数?
命令行参数是在通过操作系统的命令行界面 (CLI) 运行程序时传递给程序的附加信息或命令字符串。 这些参数通常包括用于为应用程序设置属性或配置值的信息。
在 Node.js 中,提供给 shell 的所有命令行参数都以名为“参数值(argv)”的数组形式转发给进程。 后来 Node.js 以 process.argv 的形式为每个正在运行的进程使用这个数组,或者你可以说参数默认存储在 process.argv 中。
为什么要使用命令行参数?
命令行参数非常灵活,因为它们作为字符串传递给您的程序,并且字符串数据类型可以轻松转换为其他类型。
它允许您在应用程序启动之前将信息传递给应用程序,并且您还可以通过命令行传递无限数量的参数。
命令行参数的示例语法是什么?
这是一个示例语法,命令行参数的样子:
[runtime] [script_name] [argument-1 argument-2 argument-3 ... argument-n]
参数由空格分隔,运行时可以是 sh、java、node 等。
如何解析 Node.js 中的命令行参数
在这里,我们将首先看到使用解析参数 process.argv
后来与 yargs
和 minimist
.
1. 使用 process.argv 解析参数
使用 process.argv
是在 Node.js 中解析参数的最简单方法,您不需要为此安装任何额外的包或库。 您只需将参数传递给 Node.js 应用程序,这些参数由 process.argv
默认情况下。
process.argv 数组包含三个主要元素:
- 首先,文件系统路径指向节点可执行文件。
- 其次是正在执行的 JavaScript 文件的名称。
- 第三,用户传递的第一个参数。
例子 – 我们将编写一个简单的 Node 脚本,该脚本将打印传递给应用程序的所有命令行参数。
- 创建一个名为 ‘processargv.js’ 并粘贴以下代码。
JavaScript
‘使用严格’; for (let j = 0; j < process.argv.length; j++) { console.log(j + ' -> ‘ + (process.argv[j])); }1234‘使用严格’;为了 (让 j = 0; j < 过程.argv.长度; j++) { 安慰.日志(j + ‘ -> ‘ + (过程.argv[j]));} - 现在通过传递参数使用以下命令运行“processargv.js”。
node processargv.js I am Node
在这里,我们将三个参数传递给文件,因此,您将看到“I”、“am”、“Node”分别存储在第 2、第 3 和第 4 个索引处。 输出将如下所示:
2. 使用 Yargs 传递参数
Yargs 是一个 Node.js 模块,可以帮助您传递参数。 它允许您以键值对的形式传递参数,您甚至可以稍后在程序中使用键访问参数值。
- 使用此命令安装 yargs 模块。
npm i yargs
- 现在将以下代码保存在名为的文件中 ‘yargs.js’ 在执行程序时,我们将提供姓名和年龄的值。
JavaScript
‘使用严格’; const args = require(‘yargs’).argv; console.log(‘名称:’ + args.name); 控制台日志(’年龄:’ + args.age);123456‘使用严格’; 常量 参数 = 要求(‘yargs’).argv; 安慰.日志(‘姓名: ‘ + 参数.姓名);安慰.日志(‘年龄: ‘ + 参数.年龄); - 要执行以下命令,请在提示中执行以下代码。 我们正在传递 name 和 age 的值。
node yargs.js --name=node --age=15
输出将如下所示:
了解更多高级功能 yargs
访问此高级指南。
3. 使用 Minimist 模块解析参数
另一种解析 Node.js 应用程序命令行参数的方法是使用 minimist 模块。 它解析 process.argv 数组中的参数,然后将其传输到易于使用的关联数组中。 此关联数组可用于使用索引名称访问元素。
- 使用此命令安装 minimist 模块。
npm i minimist
- 现在保存以下脚本命名 ‘minimist.js’. 这里我们使用了 slice 方法,该方法将从作为参数传递给它的索引开始删除所有先前的数组元素。
JavaScript
‘使用严格’; const args = require(‘minimist’)(process.argv.slice(2)); 控制台日志(args.i); 控制台日志(args.n);123456‘使用严格’; 常量 参数 = 要求(‘极简主义者’)(过程.argv.片(2)); 安慰.日志(参数.一世);安慰.日志(参数.n); - 在传递参数时,我们还可以指定要访问元素的字符。 在这里,我们将指定 ‘i’ 作为第二个索引的名称,然后指定 ‘n’ 作为第三个索引的名称。 像这样:
node minimist.js –i node –n 15
输出将如下所示:
尽管 minimist
没有那么多丰富的功能 yargs
您仍然可以使用它来简化您的工作。 有关 minimist 的更多详细信息,请访问此处。
结论
如果您使用 Node.js,参数解析是一个简单而重要的主题。 有多种选择可以让您的工作变得轻松。 因此,如果您想要丰富和高级的功能,请根据您的需求进行选择,然后使用 yargs
否则从 process.argv
和 minimist
.