用了yeoman之后,发现有一个控制台中上下选择的功能是怎么用Nodejs实现的

用了yeoman之后,发现有一个控制台中上下选择的功能是怎么用Nodejs实现的

RT,控制台中上线光标选择的那个是怎么做的.求大神指点

5 回复

用了Yeoman之后,发现有一个控制台中上下选择的功能是怎么用Node.js实现的

在使用Yeoman等工具时,我们经常会遇到一个在控制台中通过上下键选择选项的功能。这种功能通常是通过Node.js中的第三方库来实现的,比如inquirerreadline-sync。这些库可以简化与用户的交互过程,使得控制台应用更加用户友好。

示例代码:使用 inquirer 库实现控制台选择功能

首先,你需要安装inquirer库:

npm install inquirer

然后,你可以使用以下代码创建一个简单的选择界面:

const inquirer = require('inquirer');

// 定义问题列表
const questions = [
    {
        type: 'list',
        name: 'choice',
        message: '请选择一个选项:',
        choices: ['选项1', '选项2', '选项3'],
        default: '选项1'
    }
];

// 显示问题并获取用户输入
inquirer.prompt(questions).then((answers) => {
    console.log('你选择了:', answers.choice);
});

代码解析

  1. 引入库:首先需要引入inquirer库。
  2. 定义问题列表questions数组定义了问题列表,其中包含一个问题对象。
  3. 问题对象
    • type: 设置为'list'表示这是一个列表选择类型的问题。
    • name: 表示答案的键名,用于存储用户的选择。
    • message: 提示信息,显示在问题前面。
    • choices: 可供选择的选项列表。
    • default: 设置默认选中的选项。
  4. 获取用户输入:通过inquirer.prompt()方法显示问题并等待用户输入。当用户完成选择后,会进入回调函数,在回调函数中可以处理用户的选择结果。

其他库

除了inquirer,还可以使用readline-sync库来实现类似的功能。不过,inquirer提供了更丰富的功能和更好的用户体验,特别是在处理复杂的表单和多级菜单时。

npm install readline-sync
const readlineSync = require('readline-sync');

let choice = readlineSync.question('请选择一个选项: ', {
    choices: ['选项1', '选项2', '选项3']
});

console.log('你选择了:', choice);

以上就是如何使用Node.js实现控制台中的上下选择功能的基本步骤和示例代码。希望对你有所帮助!


贴个截图吧

已经找到类似的了,正在学习,是substack大神写的,叫terminal-menu

要实现一个控制台中的上下选择功能,可以使用 Inquirer.js 这个库。Inquirer.js 是一个用于创建交互式命令行界面的 Node.js 库,它提供了很多方便的方法来处理用户输入。

下面是一个简单的示例代码,展示如何使用 Inquirer.js 来实现一个选择菜单:

  1. 首先,安装 Inquirer.js

    npm install inquirer
    
  2. 然后,在你的 Node.js 脚本中使用 Inquirer.js 实现一个选择菜单:

    const inquirer = require('inquirer');
    
    inquirer
      .prompt([
        {
          type: 'list',
          name: 'choice',
          message: '请选择一个选项:',
          choices: ['选项1', '选项2', '选项3'],
        },
      ])
      .then((answers) => {
        console.log('你选择了:', answers.choice);
      })
      .catch((error) => {
        if (error.isTtyError) {
          // 如果 TTY 错误,则无法显示问题
          console.error('TTY 错误:', error);
        } else {
          // 如果非 TTY 错误,则其他未知错误
          console.error('未知错误:', error);
        }
      });
    

解释

  • type: 'list' 指定了这是一个列表选择器。
  • name: 'choice' 定义了问题的名称,稍后可以通过 answers.choice 获取用户的答案。
  • message: '请选择一个选项:' 显示给用户的提示信息。
  • choices 是一个数组,包含了所有可选的选项。

当运行这段代码时,控制台会显示一个包含选项的列表,并允许用户通过上下键进行选择。选择完成后,按回车确认选择,然后程序会输出用户所选择的内容。

这就是使用 Inquirer.js 实现在控制台中实现上下选择功能的基本方法。

回到顶部