npm 包 inquery 使用教程

简介

inquiry 是一个 Node.js 中常用的包,可以轻松地创建交互式界面,用于用户输入和对话框式 UI。它可以通过 shell 终端、命令行、网页表单等方式调用。在前端开发中,它经常被用于库/插件的 CLI(命令行接口)的构建,以及自动生成 README、package.json 等文件的时候。

使用 inquiry 能够有很多好处:

  • 可以轻松地创建交互式界面,与用户直接交互。
  • 可以收集用户输入的数据,用于进一步处理。
  • 可以减少从各种渠道获取数据的时间和努力。
  • 可以减少出现错误的机会,由于用户受到指导并且必须回答所有问题。

在本篇文章中,我们将总结和介绍一些常见的用法,以及如何在自己的项目中使用它,以及示范代码。

安装

在开始之前,你需要先安装 inquiry 包。你可以在项目根目录运行以下命令:

--- ------- -------

常见的用法

快速入门

下面是一个使用 inquiry 的基本教程,我们将向用户询问他们的名字,年龄和职业,并在最后使用这些信息创建一个小卡片。

----- ------- - ------------------

----------------
    -
        ----- --------
        ----- -------
        -------- ----- -- ---- -------
    --
    -
        ----- ---------
        ----- ------
        -------- ----- -- ---- ------
    --
    -
        ----- -------
        ----- ------
        -------- ----- -- ---- -------------
        -------- ------------ --------- --------- ---------- ---------
    -
----------------- -- -
    ----------------- -- ---- -------
    -------------------------------------------------
    ------------------ ------------------
    ----------------- -----------------
    ------------------------ -----------------
---

在以上代码中,inquery 提供了一个 prompt() 函数,用于询问问题并收集数据。这个函数接收一个数组,包含了要求答案的问题的列表。对于我们上面的例子,我们有三个问题:

  1. 第一个问题是类型为 input 的问题,请求输入名字。我们提供了一个 message 的字符串提示。
  2. 第二个问题是类型为 number 的问题,请求输入年龄。
  3. 第三个问题是类型为 list 的问题,提供了一个选择菜单,可供选择职业。

一旦用户回答了所有的问题,这些答案将被收集在 answers 对象中,我们可以在 Promise 的 resolve 方法中使用它们。

校验输入

对于一些必填的问题,你可能希望用户不能留空。为了达到这个目的,我们可以在 prompt() 函数中添加一个 validate 属性,用于返回一个错误消息或者是一个 Boolean(如果没有错误的话)。

----- ------- - ------------------

----------------
    -
        ----- --------
        ----- -------
        -------- ----- -- ---- -------
        --------- --------------- -
            -- -------------------- -- -- -
                ------ ----- -- -----------
            -
            ------ -----
        -
    --
    -
        ----- ---------
        ----- ------
        -------- ----- -- ---- ------
        --------- --------------- -
            -- -------------- -
                ------ ---- ---- -- - ---------
            -
            ------ -----
        -
    --
    -
        ----- -------
        ----- ------
        -------- ----- -- ---- -------------
        -------- ------------ --------- --------- ---------- ---------
    -
----------------- -- -
    ----------------- -- ---- -------
    -------------------------------------------------
    ------------------ ------------------
    ----------------- -----------------
    ------------------------ -----------------
---

在以上代码中,我们向用户询问名字和年龄,并添加了一些校验代码。validate 属性是当用户提交表单的时候调用的,它接收用户的输入值,如果输入值不合法,则返回一个错误消息,否则返回 true

分步骤询问

在某些情况下,我们可能希望在不同的阶段向用户询问不同的问题,并根据之前的答案作出反应。为了达到这个目的,我们可以使用 prompts 属性,作为 prompt() 的替代方法,来构建一个分步骤的列表:

----- ------- - ------------------

----- ------- - -
    -
        ----- --------
        ----- -------
        -------- ----- -- ---- -------
    --
    -
        ----- ---------
        ----- ------
        -------- ----- -- ---- ------
        -------- ---
        --------- --------------- -
            -- -------------- -
                ------ ---- ---- -- - ---------
            -
            ------ -----
        -
    --
    -
        ----- -------
        ----- ------
        -------- ----- -- ---- -------------
        -------- ------------ --------- --------- ---------- ---------
    --
    -
        ----- ----------
        ----- --------
        -------- ---- --- --------
        -------- ----
    --
    -
        ----- --------
        ----- ---------
        -------- -------- ------
        ----- ----------------- -
            ------ ---------------
        -
    -
--

------------------------------- -------------------------- -
    -- ------------ --- ----------- -
        --------------
            ----- --------
            ----- -----------
            -------- ----- ----------- -------- -- --- ---------- ----
        ---
    -
    ------ ------------------------
----------------- -- -
    ----------------- -- ---- -------
    -------------------------------------------------
    ------------------ ------------------
    ----------------- -----------------
    ------------------------ -----------------
    -- ------------ --- ----------- -
        ---------------------- ----------------------
    -
    ------------------- -------------------
    -- ---------------- -
        -------------------- --------------------
    -
---

在以上代码中,我们创建了一个 prompts 数组,包含了所有的问题,同时我们使用了 slice() 方法来选择只询问第 1 至第 3 个问题。我们将这些问题传递给 prompt() 函数,以建立一个交互式的命令行。

在用户完成了第 3 个问题后,我们使用 then() 方法来添加一个额外的问题,这个问题仅在选择了“工程师”这个职业时才会被询问,并在答案列表中添加一个 language 属性。最后,我们将 prompts 传递给 prompt() 函数,以询问剩下的所有问题,最终返回一个 Promise,其中包含了所有的用户答案。

从文件读取询问

如果问题太多,可能会很难维护一个巨大的数组 prompts。这时,我们可以将问题存储在一个单独的文件中,使用 require 语句来加载这个文件。

----- ------- - ------------------
----- ------- - -------------------------

-------------------------------------- -- -
    ----------------- -- ---- -------
    -------------------------------------------------
    ------------------ ------------------
    ----------------- -----------------
    ------------------------ -----------------
    -- ------------ --- ----------- -
        ---------------------- ----------------------
    -
    ------------------- -------------------
    -- ---------------- -
        -------------------- --------------------
    -
---

在以上代码中,我们将所有的问题存储在一个名为 prompts.json 的文件中,使用 require 语句将其加载并传递给 prompt() 函数。

其他常用的问题类型

inquery 包中支持的问题类型有多种,包括但不限于以下几种:

  • confirm:使用 Yes/No 回答进行确认。
  • list:提供选项列表供用户选择。
  • rawlist:类似于 list,但不带有数字、选择、等等。
  • expand:更高阶的 list,用户可以通过选择向下展开图表。
  • checkbox:允许用户选择多个选项。
  • password:隐藏密码输入,显示为星号(*)。

你可以在使用 prompt() 方法时指定这些类型。

总结

inquiry 可以帮助我们快速、轻松地创建交互式的用户界面,收集用户输入数据,对答案进行验证。通过上面介绍的常用用法,我们可以灵活地运用这个包,将其应用于我们的项目中。希望这篇文章能够为你提供一些有用的信息和实践指南。如果你想要了解更多关于 inquery 的包,你可以阅读官方文档。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065f7b238a385564ab69f9


猜你喜欢

  • npm 包 fundera-redux-form 使用教程

    前端开发过程中,表单处理是必不可少的功能之一。而 fundera-redux-form 是一个基于 Redux 实现的表单处理工具,为开发者提供了更加高效的表单处理方式。

    3 年前
  • npm 包 extapp-service 使用教程

    在前端开发中,我们常常需要引入一些第三方库或者插件来提高开发效率和丰富功能。而 npm 包管理工具则是最常用的获取和管理第三方库的途径之一。 在本文中,我们将介绍一个常用的npm包 extapp-se...

    3 年前
  • npm包fastify-expect-ct使用教程

    在现今互联网时代,隐私保护成为了一个非常重要的问题。特别是在网站中,为了保障用户的隐私,需要对一些机密信息进行保护。其中之一就是CT(Certificate Transparency)。

    3 年前
  • npm 包 ngx-context-helper 使用教程

    前言 在前端开发中,我们经常需要传递数据给组件的子孙组件。而在传递复杂的数据结构时,往往会出现层层嵌套的繁琐操作。这时,一个较好的解决方案便是使用 ngx-context-helper 这个 npm ...

    3 年前
  • npm 包 @22g/tb-register 使用教程

    在前端开发中,我们经常需要其它人已经写好的工具或者代码库,npm 就是一个非常好用的包管理工具。在这篇文章中,我们将介绍 @22g/tb-register 这个 npm 包的使用教程。

    3 年前
  • npm 包 generator-ts-node-api 使用教程

    简介 generator-ts-node-api 是一个基于 Yeoman 的 npm 包,用于快速生成 TypeScript 编写的 Node.js API 项目的脚手架。

    3 年前
  • npm 包 opaque-types 使用教程

    什么是 opaque-types? Opaque-types 是一种用于编写类型安全代码的 npm 包。它的主要作用是将不同类型的值进行隔离,防止它们互相转换,并且使它们在程序内部彼此隔离。

    3 年前
  • npm 包 rn-wkwebview-specialadditionsfork-unstable 使用教程

    简介 rn-wkwebview-specialadditionsfork-unstable 是一个用于 React Native 的 npm 包,它提供了一些额外的功能,帮助 iOS 上的 WKWeb...

    3 年前
  • npm 包 cordova-plugin-sequence-imagepicker 使用教程

    cordova-plugin-sequence-imagepicker 是一款使用 Cordova 开发移动应用时常用的 npm 包之一,它能够帮助我们方便地选择多张图片,并将它们存储在设备的本地存储...

    3 年前
  • npm 包 left-pad-es6 使用教程

    在前端开发中,经常需要对字符串进行填充或对其它数据类型进行特殊处理。而在这种情况下,我们通常会借助 left-pad-es6 这个 npm 包。本文将介绍如何使用该包,以及它的一些深入研究。

    3 年前
  • npm 包 redux-methods 使用教程

    简介 redux-methods 是一个基于 Redux 的 npm 包,它可以简化 Redux 应用程序中的 action 和 reducer 的编写流程。 它提供了一些最常用的 action 类型...

    3 年前
  • npm 包 rpscript-api-botmaster-telegram 使用教程

    简介 rpscript-api-botmaster-telegram 是一个基于 Node.js 平台的 npm 包,用于创建 Telegram 机器人。它使用 rpscript-api 来管理 Te...

    3 年前
  • npm 包 @eim-materials/basic-exception-block 使用教程

    什么是 @eim-materials/basic-exception-block? @eim-materials/basic-exception-block 是一个基于 React 的前端 UI 库中...

    3 年前
  • npm 包 @eim-materials/basic-not-found-block 使用教程

    简介 @eim-materials/basic-not-found-block 是一个基于 React 的通用“404 Not Found”页面模块。它提供了一个包含基本信息的自适应、美观的页面构建块...

    3 年前
  • npm 包 audio-to-text 使用教程

    语音转文字成为了现代人处理信息的一种新的方式,对于前端开发者而言,也有了相应的解决方案,其中一种就是使用 npm 包 audio-to-text。该包支持多种语言,可以将语音文件(例如 wav 或 m...

    3 年前
  • npm 包 git-cd 使用教程

    Git-cd 是一个 NPM 包,它可以让你在使用 Git 的时候,快速切换到指定分支的目录下进行开发。这个包的好处有很多,比如节省你的时间,让你更快速的开发,还可以让你更好的进行项目管理。

    3 年前
  • npm 包 flipkart-affiliate-client-v1 使用教程

    Flipkart-affiliate-client-v1(以下简称 FACC)是一个 NPM 包,它提供了一个方便易用的 API,可以用来与 Flipkart 开发者 API 进行交互,用于在 Fli...

    3 年前
  • Hbuild使用教程:简单实现前端项目自动化构建

    随着前端技术的不断发展,前端开发也变得越来越复杂,需要使用各种工具帮助我们进行项目开发。其中,自动化构建工具是不可或缺的一环。在此,我们将介绍一款简单易用的自动化构建工具,即npm包 hbuild。

    3 年前
  • npm 包 sakitam-cli 使用教程

    前言 前端开发中常常需要自行编写脚本进行构建、打包等操作,为了提高开发效率,npm 包自然成为了必备工具,而 sakitam-cli 则是一款优秀的 npm 包,它能够帮助我们快捷地创建项目、生成模板...

    3 年前
  • npm 包 angular6-odoo-jsonrpc 使用教程

    简介 angular6-odoo-jsonrpc 是一个适用于 Angular 6+ 的 Odoo JSON-RPC 客户端库。它提供了与 Odoo 服务器进行 JSON-RPC 通信的功能,并简化了...

    3 年前

相关推荐

    暂无文章