当前位置:首页 > 科技  > 软件

Node.js 中的交互式命令行:玩转 Inquirer.js

来源: 责编: 时间:2024-04-26 17:33:38 103观看
导读嘿,会Node.js 的小伙伴们!今天咱们来聊聊一个超级实用的 Node.js 库——inquirer.js。如果你想要让你的命令行工具变得交互式,那这个库绝对是你的不二之选。它能让你轻松创建出美观、易用的文本界面,让用户的输入体验更上

嘿,会Node.js 的小伙伴们!今天咱们来聊聊一个超级实用的 Node.js 库——inquirer.js。如果你想要让你的命令行工具变得交互式,那这个库绝对是你的不二之选。它能让你轻松创建出美观、易用的文本界面,让用户的输入体验更上一层楼。fIj28资讯网——每日最新资讯28at.com

安装 Inquirer.js

安装起来也是分分钟的事,用 npm 或 yarn 都可以:fIj28资讯网——每日最新资讯28at.com

npm install inquirer

或者fIj28资讯网——每日最新资讯28at.com

yarn add inquirer

快速上手

安装完了,咱们就可以开始玩耍了。先来个简单的示例,看看 inquirer.js 是怎么用的:fIj28资讯网——每日最新资讯28at.com

const inquirer = require('inquirer');const questions = [{   type: 'input',   name: 'username',   message: '嘿,你叫啥呀?',},{   type: 'password',   name: 'password',   message: '密码悄悄告诉我:',},];inquirer.prompt(questions).then(answers => { console.log('用户名:', answers.username); console.log('密码:', answers.password);});

这段代码里,咱们定义了两个问题:用户名和密码。type 参数告诉 inquirer.js 我们想要的输入类型,name 是问题的答案名称,message 是咱们要问用户的问题。fIj28资讯网——每日最新资讯28at.com

丰富的问题类型

inquirer.js 提供了一大堆问题类型,满足各种不同的需求:fIj28资讯网——每日最新资讯28at.com

输入(Input)

就是普通的文本输入。fIj28资讯网——每日最新资讯28at.com

{ type: 'input', name: 'name', message: '你的名字是啥?',}

密码(Password)

和输入一样,但输入的内容不会显示出来。fIj28资讯网——每日最新资讯28at.com

{ type: 'password', name: 'password', message: '密码多少呀?',}

确认(Confirm)

用户可以通过输入 y 或 n 来回答“是”或“否”。fIj28资讯网——每日最新资讯28at.com

{ type: 'confirm', name: 'continue', message: '咱们继续吗?',}

列表(List)

让用户从列表里挑一个。fIj28资讯网——每日最新资讯28at.com

{ type: 'list', name: 'theme', message: '选个主题呗:', choices: ['亮堂的', '暗夜的', '自定义的'],}

下拉列表(Expand)

下拉列表,用户可以用方向键选择多个选项。fIj28资讯网——每日最新资讯28at.com

{ type: 'expand', name: 'abilities', message: '超能力选哪个?', choices: [  {     key: 'p',     name: '力大无穷',     value: 'power',  },  {     key: 's',     name: '快如闪电',     value: 'speed',  },   // 更多选项...],}

编辑器(Editor)

这个厉害了,让用户在外部编辑器里写东西。fIj28资讯网——每日最新资讯28at.com

{  type: 'editor',  name: 'bio',  message: '来,写个自我介绍:',}

处理用户的回答

inquirer.prompt() 方法返回一个 Promise,用户一提交答案,Promise 就会带着所有答案的对象来解析。你可以拿这些答案去做各种酷炫的事。fIj28资讯网——每日最新资讯28at.com

inquirer.prompt(questions).then(answers => {  // 用 answers 对象干点啥  console.log('用户名:', answers.username);});

动态提问

有时候,你可能想问的问题取决于用户之前的回答。inquirer.js 支持这种智能模式,用 when 属性就能搞定。fIj28资讯网——每日最新资讯28at.com

const questions = [  {    type: 'confirm',    name: 'hasAccount',    message: '有账户不?',  },  {    type: 'input',    name: 'username',    message: '用户名是啥?',    when: answers => answers.hasAccount  },  {    type: 'input',    name: 'email',    message: '邮箱地址呢?',    when: answers => !answers.hasAccount  }];

在这个例子里,用户名的输入框会不会显示,取决于用户对 hasAccount 的回答。fIj28资讯网——每日最新资讯28at.com

装饰你的命令行

inquirer.js 还让你能通过 prefix 属性来加个前缀,或者用 transformer 函数来美化显示给用户的答案。fIj28资讯网——每日最新资讯28at.com

{  type: 'input',  name: 'name',  message: '叫啥?',  prefix: '称呼:',  transformer: input => `你好啊,${input}!`,}

和其他 Node.js 工具一起玩

inquirer.js 可以和其他 Node.js 工具一起用,比如和 cross-spawn 模块搭配,根据用户的回答执行不同的命令。fIj28资讯网——每日最新资讯28at.com

const { spawn } = require('cross-spawn');inquirer.prompt([  {    type: 'list',    name: 'action',    message: '想干点啥?',    choices: ['装点依赖', '跑个测试', '撤了'],  },]).then(answers => {  const command = answers.action === '装点依赖' ? 'npm install' : 'npm test';  spawn.sync(command, [], { stdio: 'inherit' });});

总结

inquirer.js 是一个功能超群的库,能让你的命令行工具变得既强大又用户友好。无论是简单的数据收集,还是复杂的多步骤交互,inquirer.js 都能帮你搞定。今天咱们学了 inquirer.js 的基本用法,现在你应该对这个库有个大概的了解了。fIj28资讯网——每日最新资讯28at.com

fIj28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-85867-0.htmlNode.js 中的交互式命令行:玩转 Inquirer.js

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Rust 机器学习,一定要知道的这些库,可以替代 Python 库了

下一篇: 写了个插件,一口气解决项目中所有精度丢失问题!

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 一加首款折叠屏!一加Open渲染图出炉:罕见单手可握小尺寸

    一加首款折叠屏!一加Open渲染图出炉:罕见单手可握小尺寸

    8月5日消息,此前就有爆料称,一加首款折叠屏手机将会在第三季度上市,如今随着时间临近,新机的各种消息也开始浮出水面。据悉,这款新机将会被命名为“On
  • CSS单标签实现转转logo

    CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 2天涨粉255万,又一赛道在抖音爆火

    2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘是西部数据发布的最新一代WD Blue系列的固态硬盘,不仅闪存技术更为精进,性能也得到了进一步的跃升。WD Blue SN570 NVMe SSD的包装外
  • 三翼鸟智能家居亮相电博会,让用户体验更真实

    三翼鸟智能家居亮相电博会,让用户体验更真实

    2021电博会在青岛国际会展中心开幕中,三翼鸟直接把“家”搬到了现场,成为了展会的一大看点。这也是三翼鸟继9月9日发布了行业首个一站式定制智慧家平台后的
Top
Baidu
map