Node.js 入门教程

Node.js中文网

本文仅用于学习记录,不存在任何商业用途,如侵删


文章目录

  • Node.js 入门教程
  • 13 在 Node.js 中从命令行接收输入


13 在 Node.js 中从命令行接收输入

如何使 Node.js CLI 程序具有交互性?

从版本 7 开始,Node.js 提供了 readline来执行以下操作:

js调用nfc读取 js读取输入_回调函数

每次一行地从可读流(例如 process.stdin 流,在 Node.js 程序执行期间该流就是终端输入)获取输入。

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
})


readline.question(`你叫什么名字?`, name => {
  console.log(`你好 ${name}!`)
  readline.close()
})

js调用nfc读取 js读取输入_javascript_02

这段代码会询问用户名,当输入了文本并且用户按下回车键时,则会发送问候语。

question() 方法会显示第一个参数(即问题),并等待用户的输入。 当按下回车键时,则它会调用回调函数。

在此回调函数中,关闭了 readline 接口。

readline 还提供了其他几个方法,详见上面的文档链接。

如果需要密码,则最好不要回显密码,而是显示 * 符号。

最简单的方式是使用 readline-sync,其在 API 方面非常相似。

js调用nfc读取 js读取输入_node.js_03

先安装

js调用nfc读取 js读取输入_js调用nfc读取_04

嗯,白安了

Inquirer.js 软件包则提供了更完整、更抽象的解决方案。

js调用nfc读取 js读取输入_javascript_05

可以使用 npm install inquirer 进行安装,然后复用上面的代码如下:

js调用nfc读取 js读取输入_javascript_06

const inquirer = require('inquirer')


var questions = [
  {
    type: 'input',
    name: 'name',
    message: "你叫什么名字?"
  }
]


inquirer.prompt(questions).then(answers => {
  console.log(`你好 ${answers['name']}!`)
})

js调用nfc读取 js读取输入_回调函数_07

感觉还是版本高了的原因

js调用nfc读取 js读取输入_前端_08

js调用nfc读取 js读取输入_回调函数_09

js调用nfc读取 js读取输入_javascript_10

OK。

其实也可以在项目的package.json文件中,指定type字段为module

js调用nfc读取 js读取输入_前端_11

这样就可以用import了

js调用nfc读取 js读取输入_前端_12

Inquirer.js 可以执行许多操作,例如询问多项选择、展示单选按钮、确认等。

所有的可选方案都值得了解,尤其是 Node.js 提供的内置方案,但是如果打算将 CLI 输入提升到更高的水平,则 Inquirer.js 是更优的选择。