Node.js的readline模块是用来处理从可读流中逐行读取数据的工具,尤其适合在命令行环境中与用户进行交互。它允许开发者创建一个接口实例,通过这个接口与用户进行问答式交互,例如从`process.stdin`读取输入并将其发送到`process.stdout`。 在使用readline模块之前,需要先引入它。如果在Node.js的命令行模式下,readline模块已经默认加载;但在运行脚本时,需要手动通过`require('readline')`来引入。创建readline接口实例时,必须提供两个参数:`input`和`output`,分别代表要监听的可读流和写入readline的可写流。通常,`input`设置为`process.stdin`,`output`设置为`process.stdout`。 readline接口实例的创建有以下两种方式: 1. 只传入两个必填参数: ```javascript const readLine = require('readline'); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout }); ``` 2. 传入其他非必需参数,如`prompt`: ```javascript const readLine = require('readline'); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout, prompt: '> 请输入' }); ``` 调用`rl.prompt()`会显示设置的提示符,使用户可以在控制台输入。 readline接口提供了几个重要的方法: 1. `rl.setPrompt(prompt)`:设置提示符,如`rl.setPrompt('> 请输入')`,当调用`rl.prompt()`时,会在终端显示设置的提示。 2. `rl.prompt([preserveCursor])`:准备用户输入,将提示符放到新的一行。`preserveCursor`为`true`时,不会重置光标位置。 3. `rl.write(data[, key])`:如果输入流为`null`或`undefined`,则将数据写入输出流。`key`参数可用来模拟键盘事件,如删除当前行。 4. `rl.question(query, callback)`:预定义提示`query`,用户输入后,`callback`会被调用,返回用户的输入内容。 例如,下面是一个简单的年龄询问示例: ```javascript rl.question('你今年多大了?\n', function(age) { console.log('这是你输入的回答结果:' + age); rl.close(); }); ``` 在这个例子中,`rl.question`会向用户提问,用户输入年龄后,通过回调函数输出回答结果,并调用`rl.close()`来关闭readline接口,结束输入。 Node.js的readline模块是进行命令行交互的强大工具,它可以方便地处理用户输入,实现更复杂的命令行应用。通过熟练掌握其用法,开发者能够创建出具有更好用户体验的CLI(命令行界面)工具。
- 粉丝: 7
- 资源: 899
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助