如何解析 Node.js 中的命令行参数

Node.js 是一个基于事件的开源异步 I/O 框架,它使用 Google 的 V8 JavaScript 引擎。 我们使用它来开发在服务器端和客户端都使用 JavaScript 的应用程序。 Node.js 应用程序是用 JavaScript 编写的。

Node.js 应用程序也像任何其他编程语言一样接受命令行参数。 默认情况下,Node.js 能够处理你的参数,但如果你想要一些额外的功能,那么你可以使用第三方工具和包,如 yargsminimist. 在本文中,我们将看到如何使用 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 后来与 yargsminimist.

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  

    输出将如下所示: