Node.js 入门教程
Node.js中文网
本文仅用于学习记录,不存在任何商业用途,如侵删
文章目录
- Node.js 入门教程
- 13 在 Node.js 中从命令行接收输入
13 在 Node.js 中从命令行接收输入
如何使 Node.js CLI 程序具有交互性?
从版本 7 开始,Node.js 提供了 readline来执行以下操作:
每次一行地从可读流(例如 process.stdin
流,在 Node.js 程序执行期间该流就是终端输入)获取输入。
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
})
readline.question(`你叫什么名字?`, name => {
console.log(`你好 ${name}!`)
readline.close()
})
这段代码会询问用户名,当输入了文本并且用户按下回车键时,则会发送问候语。
question()
方法会显示第一个参数(即问题),并等待用户的输入。 当按下回车键时,则它会调用回调函数。
在此回调函数中,关闭了 readline 接口。
readline
还提供了其他几个方法,详见上面的文档链接。
如果需要密码,则最好不要回显密码,而是显示 *
符号。
最简单的方式是使用 readline-sync,其在 API 方面非常相似。
先安装
嗯,白安了
Inquirer.js 软件包则提供了更完整、更抽象的解决方案。
可以使用 npm install inquirer
进行安装,然后复用上面的代码如下:
const inquirer = require('inquirer')
var questions = [
{
type: 'input',
name: 'name',
message: "你叫什么名字?"
}
]
inquirer.prompt(questions).then(answers => {
console.log(`你好 ${answers['name']}!`)
})
感觉还是版本高了的原因
OK。
其实也可以在项目的
package.json
文件中,指定type
字段为module
。这样就可以用import了
Inquirer.js 可以执行许多操作,例如询问多项选择、展示单选按钮、确认等。
所有的可选方案都值得了解,尤其是 Node.js 提供的内置方案,但是如果打算将 CLI 输入提升到更高的水平,则 Inquirer.js 是更优的选择。