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

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

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

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

安装 Inquirer.js

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

npm install inquirer

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

yarn add inquirer

快速上手

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

丰富的问题类型

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

输入(Input)

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

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

密码(Password)

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

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

确认(Confirm)

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

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

列表(List)

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

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

下拉列表(Expand)

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

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

编辑器(Editor)

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

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

处理用户的回答

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

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

动态提问

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

装饰你的命令行

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

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

和其他 Node.js 工具一起玩

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

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

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

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

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

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

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 造车两年股价跌六成,小米的估值逻辑变了吗?

    如果从小米官宣造车后的首个交易日起持有小米集团的股票,那么截至2023年上半年最后一个交易日,投资者将浮亏59.16%,同区间的恒生科技指数跌幅为52.78%
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    日前iQOO手机官方宣布,新一代电竞旗舰iQOO 11S将会在7月4日19:00正式与大家见面。随着发布时间的日益临近,官方关于该机的预热也更加密集,截至目前已
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
Top