inquirerjs简介

inquirerjs 是什么

Inquirer 是常规交互式命令行用户接口的集合,提供给 Node.js 一个方便嵌入,漂亮的命令行接口。
Inquirer 会简化询问终端用户问题,解析,验证答案,提供错误反馈等等功能。
Inquirer基于诺言的npm软件包,用于Node项目中,以创建用于基于查询的任务的CLI(命令行界面)工具。 询问用户问题,验证用户输入并根据给定的响应进行操作非常好。

通俗来讲就是它帮助我们实现与用户的交互式交流,比如给用户提一个问题,用户给我们一个答案,我们根据用户的答案来做一些事情

它有以下特色:

  • 提供错误回调
  • 可以提出问题
  • 解析输入的答案
  • 验证答案
  • 管理分层提示

文档

安装

npm i -S inquirer

使用

var inquirer = require('inquirer');
inquirer
  .prompt([
    /* 在这里配置您的问题(可以设置多个,它们将按顺序向用户提出) */
  ])
  .then(answers => {
    // 回调,对用户输入的答案就行处理
  });

简单功能参数介绍

  • type:表示提问的类型,包括:input、confirm、 list、rawlist、expand、checkbox、password、 - editor。
  • name: 存储当前输入的值。
  • message:问题的描述。
  • default:默认值。
  • choices:列表选项,在某些type下可用,并且包含一个分隔符(separator);
  • validate:对用户的回答进行校验。
  • filter:对用户的回答进行过滤处理,返回处理后的值。
  • when:根据前面问题的回答,判断当前问题是否需要被回答。
  • pageSize:修改某些type类型下的渲染行数。
  • prefix:修改message默认前缀。
  • suffix:修改message默认后缀。

方法

inquirer.prompt(questions, answers) -> promise

启动提示界面(查询会话)

inquirer.registerPrompt(name, prompt)

注册一个提问类型插件

inquirer.createPromptModule() -> prompt function

创建一个独立的查询器模块。如果您不想在覆盖或添加新提示类型时影响也依赖查询器的其他库。

案例

普通用法

prompt()里面的参数即问的问题,在终端中都会一一列出来.then里面的answer就是用户输入的答案,如果没有输入的话就默认default里面的数据

const inquirer = require("inquirer");
const question = [
    {
        type:"input",
        message:"你的职业是",
        name:"occupation",
        default:"养猪"
    }
]
// 写法1
inquirer.prompt(question ).then(answer=>{
    // 这里输出用户输入的答案
    console.log(answer);
});

// 写法2
let answer = await inquirer.prompt(question)
console.log(answer )

请添加图片描述

以下案例只更改prompt里面的参数,注意name千万不要重复哦

多次输入 input

const question = [{
    type: "input",
    message: "你的职业是",
    name: "occupation",
    default: "养猪"
  },
  {
    type: "input",
    message: "你的收入是多少",
    name: "income",
    default: 10000
  },
]

校验 validate

const question = [
  {
    type: "input",
    message: "你的收入是多少",
    name: "income",
    default: 10000,
    validate: (val) => {
      if (val > 1000) {
        return true
      } else {
        return "我不信你这么穷";
      }
    }
  },
]

数字 number

const question  = [
    {
        type:"number",
        message:"请输入数字",
        name:"num"
    }
]

密码 password

[
  {
      type:"password",
      message:"请输入密码:",
      name:"pwd"
  }
]

确认confirm

confirm的话,默认是一次运行,当前问答是否运行取决于when里面的条件,如下代码,如果status的答案是false,answer.status为false,power则不会展示出来

const question = [
const question = [ {
  type:"confirm",
  message:"你队现状是否满意,选择'n'就结束问卷了哦",
  name:"status",
  default:true
},
{
  type: "confirm",
  message: "你的动力是什么",
  name: "power",
  suffix: "T_T", //后缀
  prefix:"^_^", //前缀
  when: function(answer) { // 当status为true的时候才会到达这步
      return answer.status//只有我return true才会这个confirm
  }
}]
]

选项组 list /rawlist/expand

const question = [
  {
      type:"list", // 此处可以 替换成rawlist试试看
      message:"请选择一个版本:",
      name:"plugin",
      default:"vue2.x",
      choices:[
          "vue2.x",
          "vue3.x"
      ],
      pageSize:2, // 此处可以添加分页,一页展示多少条
      filter: function (val) {
          return `您选择了`+ val;
      }
  }
]


const question = [
  {
      type:"expand",
      message:"请选择一个版本:",
      name:"plugin",
      default:"vue2",
      choices:[
          {key:'2',value:"vue2"},
          {key:'3',value:"vue3"},
      ]
  }
]

多选 checkbox

const question = [
  {
      type:"checkbox",
      message:"选择水果",
      name:"Fruits",
      choices:[ "苹果", "香蕉",  "栗子",  ]
  }
]

const question = [
  {
      type:"checkbox",
      message:"选择水果",
      name:"Fruits",
      choices:[
          { name : "苹果" },
          new inquirer.Separator(), // 可以添加分隔符
          { name : "香蕉"  },
          { name : "栗子" },
          { name : "梨子" },
      ],
      pageSize:2, // 此处可以添加分页,一页展示多少条
  }
]

编辑器 editor

[
  {
      type:"editor",
      message:"按回车调出编辑器,关闭编辑器的时候会打印出输入的内容",
      name:"editor"
  }
]
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该代码没有语法错误,但是可以进行一些改进: 1. 在验证失败时,应该使用 JOptionPane.showMessageDialog() 方法显示错误信息,而不是使用 JOptionPane.showConfirmDialog() 方法,因为 showConfirmDialog() 方法会返回用户点击的按钮,而 showMessageDialog() 方法只是显示信息。 2. 在验证成功时,应该直接关闭窗口,因为没有其他操作。 3. 应该使用密码框的 getPassword() 方法获取密码,而不是 getText() 方法,因为 getPassword() 方法返回的是字符数组,更加安全。 以下是进行了改进的代码: ```java package text6; import text6.inquire; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class inquire1 extends JFrame implements ActionListener { JLabel lbl_name = new JLabel("用户名"); JLabel lbl_pwd = new JLabel("密码"); JTextField txt_name = new JTextField(); JPasswordField txt_pwd = new JPasswordField(); JButton btn_ok = new JButton("登录"); JButton btn_cancel = new JButton("取消"); inquire dao = new inquire(); public inquire1() { setLayout(new GridLayout(3, 2)); add(lbl_name); add(txt_name); add(lbl_pwd); add(txt_pwd); add(btn_ok); add(btn_cancel); btn_ok.addActionListener(this); btn_cancel.addActionListener(this); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]) { JFrame.setDefaultLookAndFeelDecorated(true); inquire1 frm = new inquire1(); frm.setSize(200, 200); frm.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == btn_ok) { String uname = txt_name.getText().trim(); String upwd = new String(txt_pwd.getPassword()); boolean flag = dao.validate(uname, upwd); if (flag) { JOptionPane.showMessageDialog(this, "用户验证通过"); this.dispose(); } else { JOptionPane.showMessageDialog(this, "用户名或密码输入错误"); } } else if (e.getSource() == btn_cancel) { this.dispose(); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值