当前位置: 首页 > news >正文

【nodejs 命令行交互神器 - inquirer.js】

需求

大家在开发时,有时需要从命令行读取用户的输入,或者让用户选择。在nodejs中,这个怎么实现?

原生实现 ❌

process.stdin.setEncoding('utf8');process.stdin.on('readable', () => {let chunk;// 使用循环确保我们读取所有的可用输入while ((chunk = process.stdin.read()) !== null) {console.log(`你输入的数据是: ${chunk}`);}
});process.stdin.on('end', () => {process.stdout.write('结束输入.\\n');
});

可以看到 ,整体比较麻烦 ,而且可扩展性不强,如果不是单纯输入,而需要用户选择等,还要更多代码实现。

inquirer框架 ✅

输入


代码

import input from '@inquirer/input';(async () => {const answer = await input({ message: 'Enter your name' });console.log(answer)
})()

选择


代码

import select, { Separator } from '@inquirer/select';const answer = await select({message: 'Select a package manager',choices: [{name: 'npm',value: 'npm',description: 'npm is the most popular package manager',},{name: 'yarn',value: 'yarn',description: 'yarn is an awesome package manager',},new Separator(),{name: 'jspm',value: 'jspm',disabled: true,},{name: 'pnpm',value: 'pnpm',disabled: '(pnpm is not available)',},],
});

其还支持更多丰富的交互方式,可以在github上搜Inquirer.js查看其更多用法。

http://www.lryc.cn/news/346454.html

相关文章:

  • Liunx软件包管理(上)
  • 华为eNSP中型企业局域网网络规划设计(下)
  • C语言(指针)1
  • perl:用 MIDI::Simple 生成midi文件,用 pygame 播放 mid文件
  • 数据库-脏读
  • react 用合计项
  • IP 地址追踪工具促进有效的 IP 管理
  • 快手蓝V商家电话采集软件操作教程
  • 工业机器人应用实践之玻璃涂胶(篇二)
  • C++ 455. 分发饼干
  • 未来娱乐新地标?气膜球幕影院的多维体验—轻空间
  • 工业机器人应用实践之玻璃涂胶(篇三)
  • 基于Huffman编码的字符串统计及WPL计算
  • 处理VS2022中(C/C++)scanf报错问题(3种)
  • C#面:Session 喜欢丢值且占内存,Cookis不安全,请问 C# 可以用什么办法代替这两种原始的方法
  • Python并发编程 05 锁、同步条件、信号量、线程队列、生产者消费者模型
  • UIKit之UIButton
  • 阿里云VOD视频点播流程(2)
  • 在Ubuntu上搭建幻兽帕鲁服务器
  • Java中常用类String的不可变性详解
  • uniapp 自定义App UrlSchemes
  • MSP430环境搭建
  • 【Qt C++实现蓝牙互联】
  • AI绘画已如此厉害,为何我们仍需学习绘画?
  • Android 实现背景图片不被拉伸的效果 9-patch图片 .9图
  • Java EE/Jakarta EE范畴一览
  • 洛谷 P3391:文艺平衡树 ← Splay树模板题
  • 【高校科研前沿】北师大陈晋教授团队在遥感顶刊发表最新成果:ClearSCD模型:在高空间分辨率遥感影像中综合利用语义和变化关系进行语义变化检测
  • 关于YOLO8学习(五)安卓部署ncnn模型--视频检测
  • 从哪些方面可以看出光伏的未来发展好?