在Node.js中接受来自命令行的输入

news/2024/10/23 9:24:46/

目录

1、简介

2、readlineSync

3、列表选择一个项目:

4、类似滑块范围的UI:


1、简介

如何制作一个Node.js CLI程序使用内置的readline Node.js模块进行交互

如何制作一个节点js CLI程序交互?

Node.js 从版本7起开始提供了readline模块来执行以下操作:从可读流(如process.stdin流)中获取输入,该流在Node执行期间。js程序是终端输入,一次一行。

const readline = require('readline').createInterface({input: process.stdin,output: process.stdout,
});
readline.question(`What's your name?`, name => {console.log(`Hi ${name}!`);readline.close();
});

 

这段代码询问用户的名字,一旦输入了文本,用户按下回车键,我们就发送一个问候语。

question() 方法显示第一个参数(一个问题)并等待用户输入。一旦按下enter,它就会调用回调函数。

在这个回调函数中,我们关闭readline接口。

readline 提供了几种其他方法,请在上面链接的包文档中查看它们。

如果需要输入密码,最好不要回显,而是显示*符号

最简单的方法是使用readline-sync包,它在API方面非常相似,并且开箱即用。

2、readlineSync

同步读取行,用于交互式运行,以便通过控制台(TTY)与用户进行对话。

import readlineSync from 'readline-sync'
// Wait for user's response.
var userName = readlineSync.question('readline-sync ==> 你的名字? ');
console.log('Hi ' + userName + '!');

 

3、列表选择一个项目

var readlineSync = require("readline-sync"),animals = ["Lion", "Elephant", "Crocodile", "Giraffe", "Hippo"],index = readlineSync.keyInSelect(animals, "Which animal?");
console.log("Ok, " + animals[index] + " goes to your room.");

 

4、类似滑块范围的UI:

(按Z键向左滑动,按X键向右滑动,按空格键退出)

var readlineSync = require("readline-sync"),MAX = 60,MIN = 0,value = 30,key;
console.log("\n\n" + new Array(20).join(" ") + "[Z] <- -> [X]  FIX: [SPACE]\n");
while (true) {console.log("\x1B[1A\x1B[K|" +new Array(value + 1).join("-") +"O" +new Array(MAX - value + 1).join("-") +"| " +value);key = readlineSync.keyIn("", { hideEchoBack: true, mask: "", limit: "zx " });if (key === "z") {if (value > MIN) {value--;}} else if (key === "x") {if (value < MAX) {value++;}} else {break;}
}
console.log("\nA value the user requested: " + value);

 

Inquirer.js包.提供了一个更完整和抽象的解决方案。

Inquirer.js包地址:
https://github.com/SBoudrias/Inquirer.js

你可以使用npm install inquirer安装它,然后你可以像这样复制上面的代码:

import inquirer from 'inquirer';
const questions = [{type: 'input',name: 'name',message: "你的名字?",},
];inquirer.prompt(questions).then(answers => { console.log(`Hi ${answers.name}!`);
});

 

Inquirer.js允许你做很多事情,比如询问多个选择,单选按钮,确认等等。

了解所有的替代方案都是值得的,尤其是Node.js 提供的内置方案。但如果您计划将CLI输入提升到下一个级别,则可以使用Inquirer.js是最佳选择。

功能和readline-sync包类似,但是功能更加强大,具体使用可以参考官网。

 

 

 

 


http://www.ppmy.cn/news/100754.html

相关文章

研究人员发现新的 ICS 恶意软件工具包旨在导致电力中断

在过去几年中&#xff0c;国家支持的攻击者一直在提高攻击电网等关键基础设施以造成严重破坏的能力。 这个武器库的新成员是一个恶意软件工具包&#xff0c;它似乎是由一家俄罗斯网络安全公司为红队演习开发的。 该恶意软件被 Mandiant 的研究人员称为 COSMICENERGY&#xff…

Golang每日一练(leetDay0080) 矩形面积、翻转二叉树

目录 223. 矩形面积 Rectangle Area &#x1f31f;&#x1f31f; 226. 翻转二叉树 Invert Binary Tree &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

二叉树与堆的解析

数的概念与结构 线性表&#xff1a;是一种具有n个相同特性的数据元素的有限序列。线性表逻辑上是线性结构&#xff0c;也就是连成的一条直线&#xff0c;但一条直线上的数据元素并不是一定要物理结构连续的。 讲到二叉树之前&#xff0c;我们要先了解一下什么是树&#xff0c;首…

感谢十二年的陪伴——分享回归,不忘初心(Eastmount博客总结及未来规划)

曾记否&#xff0c;2021年4月28日&#xff0c;为了更好地从事科研和学习&#xff0c;当时给所有读者群发了我在CSDN唯一的私信&#xff0c;感谢大家十年的陪伴&#xff0c;短暂消失&#xff0c;不负青春。当时也收到了很多博友的鼓励与祝福&#xff0c;感恩。 是啊&#xff01…

C语言基础:翁恺笔记

英尺英寸换算米案例&#xff1a; #include <stdio.h>int main() {int inch0,foot0;printf("请输入身高的英尺和英寸\n");scanf("%d %d",&inch,&foot);printf("身高是%f米",(inchfoot/12)*0.3048);return 0; } 总结&#xff1a;…

【Vue3】滑动验证组件 | 滑动验证

前言 滑块验证不只判断是否滑动到尾部&#xff0c;真正的目的是检测用户行为&#xff0c;检测行为是人为、脚本、还是其它。 防止使用脚本大量注册、请求等 。比如发送请求时&#xff0c;判断用户在某个页面停留了多长时间。登录、注册时是否点击了登录、注册按钮&#xff0c;…

利用宝塔服务器面板快速搭建PHP运行环境

目录 宝塔面板介绍 安装面板 环境配置 如果需要进行php开发&#xff0c;开发环境少不了。 这个环境主要有两种&#xff0c;一是编辑器或IDE&#xff0c;一是服务器的运行环境。 编辑器常用的有vscode、sublime、phpstorm、hbuilder等都可以&#xff0c;这个也比较简单&…

【利用AI让知识体系化】7种结构型模式

文章目录 结构型模式简介适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式 结构型模式 简介 在设计模式中&#xff0c;结构型模式用于描述如何将对象和类组装成较大的结构&#xff0c;并灵活地处理对象之间的关系。 结构型模式包括以下几种&#xff1a; 适配器…