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

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

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

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

安装 Inquirer.js

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

npm install inquirer

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

yarn add inquirer

快速上手

安装完了,咱们就可以开始玩耍了。先来个简单的示例,看看 inquirer.js 是怎么用的:p0Y28资讯网——每日最新资讯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 是咱们要问用户的问题。p0Y28资讯网——每日最新资讯28at.com

丰富的问题类型

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

输入(Input)

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

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

密码(Password)

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

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

确认(Confirm)

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

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

列表(List)

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

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

下拉列表(Expand)

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

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

编辑器(Editor)

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

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

处理用户的回答

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

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

动态提问

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

装饰你的命令行

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

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

和其他 Node.js 工具一起玩

inquirer.js 可以和其他 Node.js 工具一起用,比如和 cross-spawn 模块搭配,根据用户的回答执行不同的命令。p0Y28资讯网——每日最新资讯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 的基本用法,现在你应该对这个库有个大概的了解了。p0Y28资讯网——每日最新资讯28at.com

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

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

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

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

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

标签:
  • 热门焦点
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
Top