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[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
输出将如下所示: