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 包 modify-exif 使用教程

    什么是 modify-exif? modify-exif 是一款用于修改图片 EXIF 信息的 npm 包。它可以让开发者轻松地添加、移除、编辑图片的 EXIF 数据。

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

    介绍 npm 包 git-commands 是一个可以在 Node.js 中使用的命令行工具,以自动化的方式实现 git 版本控制功能。它提供了一系列常用的 git 命令,例如 git init、gi...

    3 年前
  • npm 包 atlas-pretty-hrtime 使用教程

    什么是 atlas-pretty-hrtime? atlas-pretty-hrtime 是一个可以格式化 Node.js 中 process.hrtime 方法返回值的 npm 包。

    3 年前
  • npm 包:eric-black-package 使用教程

    什么是 npm 包? 在前端开发中,npm 是我们常用的包管理工具,提供了很多方便快捷的方法来在项目中引入和管理依赖的包。 npm 包简单来说就是一个包含了代码、文档、依赖信息等内容的复合型文件,使用...

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

    rpscript-api-open 是一个通过 Node.js 连接到 rpacloud 平台,使用其中的 rpscript API 的 npm 包。它可以让前端开发者更加容易地使用 rpacloud...

    3 年前
  • npm 包 @meifacil/react-native-pdf-view 使用教程

    PDF 阅读是很多前端项目都需要的功能,而 @meifacil/react-native-pdf-view 是一款在 React Native 中使用的 PDF 阅读组件。

    3 年前
  • npm 包 backbone.react-bridge 使用教程

    如果你正在寻找一种简单而有效的方式将 Backbone Models 和 Collections 的数据绑定到 React 组件上,那么你应该尝试使用 backbone.react-bridge 这个...

    3 年前
  • npm 包 @coracain/cain-ice-template 使用教程

    在前端开发中,我们经常需要使用一些模版来加速开发进程,@coracain/cain-ice-template 就是一款优秀的 Vue.js 项目模版。该模板结构清晰,集成了众多流行的前端技术,并且支持...

    3 年前
  • npm 包 angular-select2-js-component 使用教程

    前言 在现代 Web 应用程序开发过程中,选择器组件是常用的 UI 组件。在 Angular 框架中,自带的 select 组件并不支持下拉框数据的动态刷新等一系列高级功能。

    3 年前
  • npm 包 turkish-string 使用教程

    前言 随着互联网技术的飞速发展,Web 前端的开发变得越来越重要。作为一名前端工程师,我们需要掌握各种相关的技术和工具,以确保我们能够高效地完成开发工作。在这些技术和工具中,npm 包是一个非常重要的...

    3 年前
  • npm 包 monaco-typescript-project-util 使用教程

    在前端开发中,我们经常需要使用编辑器来编写和调试我们的代码。而 monaco-editor 是一个非常出色的编辑器,它支持多种语言、语法高亮、智能提示和自动完成等特性。

    3 年前
  • npm 包 atlas-hrtime 使用教程

    在前端开发中,性能优化绝对是一个重要的议题。其中,时间方面的优化也是很关键的一环。Node.js 中提供了一个高分辨率时间函数,叫作 process.hrtime(),可以用来精确地测量代码的执行时间...

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

    前言 在前端开发过程中,我们经常需要进行一些浏览器自动化操作,这时候就需要用到 Puppeteer 了。Puppeteer 是一款基于 Chrome DevTools 协议的高级爬虫工具。

    3 年前
  • npm 包 angular-intl 使用教程

    概述 angular-intl 是一款基于 Angular 框架的国际化插件,它提供了一系列的国际化工具和组件,可以简化 Angular 应用程序的本地化过程,包括日期格式化、货币格式化、文本翻译和数...

    3 年前
  • npm 包 babel-plugin-react-native-platform-specific-extensions 使用教程

    React Native 是一个流行的跨平台框架,允许开发人员使用相同的代码库来构建 iOS 和 Android 应用程序。但有时开发人员需要在不同的平台上引入不同的模块或组件,而 babel-plu...

    3 年前
  • npm 包 datar 使用教程

    在前端开发中,我们常常需要进行数据处理和分析。npm 包中的 datar 提供了几乎与 R 语言中的数据处理函数库相同的 API。本文将详细介绍这个包的使用方法,并提供示例代码。

    3 年前
  • npm 包 make-new-next-app 使用教程

    在前端开发中,使用现代化的工具和技术已经成为了标配。在 React 项目中,使用 Next.js 是非常常见的选择。Next.js 不仅仅提供了一些常见问题的解决方案,还提供了一些高级特性,如静态导出...

    3 年前
  • npm 包 react-native-pdf-view-meifacil 使用教程

    PDF 文件是现代文档处理中不可或缺的一部分,而 React Native 也与之息息相关。为了更好地展示 PDF 文件,在 React Native 应用中,我们需要使用相关的第三方库。

    3 年前
  • npm 包 green-http 使用教程

    在前端开发中,HTTP 请求是不可避免的部分。通常我们使用 Ajax 或者 Fetch 来进行 HTTP 请求。但是,如果我们需要同时处理多个请求,又该如何实现呢?这就是 npm 包 green-ht...

    3 年前
  • npm 包 gooddata-node 使用教程

    概述 gooddata-node 是一个基于 Node.js 的 GoodData REST API 的封装包。它提供了良好的封装,可以方便地与 GoodData 服务器进行交互。

    3 年前

相关推荐

    暂无文章