什么是readline
readline允许从可读流中以逐行的方式读取数据,比如process.stdin等。 在node.js命令行模式下默认引入了readline模块,但如果是使用node.js运行脚本的话,则需要自己通过require('readline')方式手动引入该模块。
怎么使用readline
创建实例
首先、创建一个接口实例,提供一个Object类型的参数。参数如下: input: 监听的可读流(必需) output: 写入readline的可写流(必需) completer: 用于 Tab 自动补全的可选函数(不常用) terminal: 如果希望 input 和 output 流像 TTY 一样对待,那么传递参数 true ,并且经由 ANSI/VT100 转码。 默认情况下检查 isTTY 是否在 output 流上实例化。(不常用) historySize: 保留行历史纪录最大值,为了禁用该值被设置为0,默认为30,只有在terminal被设置为true或通过一个内部输出检查时,这个选项才有作用,否则历史缓存机制不会初始化。(不常用)
第一种方式:只传入两个必传参数
const readLine = require('readline'); let rl = readLine.createInterface(process.stdin, process.stdout);
第二种方式:可以传入其他非必需参数
const readLine = require('readline'); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout, // 其他参数省略 })
实例
const readLine = require('readline'); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout, prompt: '> 请输入' }) // 调用 rl.prompt(); // 控制台结果显示:>请输入
注意:一旦该代码被调用,Node.js程序将不会终止知道readline接口被关闭,因为接口会在输入流中不停的等待数据。
方法
以下所有的实例均依据如下rl所创建:
const readLine = require('readline'); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout })
1、rl.setPrompt([prompt])
设置提示符,当你使用node运行该文件,并且调用rl.prompt()时,会在终端看到你设置的提示prompt,即“> 请输入”
rl.setPrompt('> 请输入')
注意:该方法和上面的实例参数配置是一样的效果
2、rl.prompt([preserveCursor])
为用户输入准备好readline,将现有的setPrompt选项放到新的一行,让用户有一个新的地方开始输入。将preserveCursor设为true来防止光标位置被重新设定成0。 如需要换行输入,即在新的一行,输入信息,可在prompt中加入/n。
rl.prompt(); // 控制台结果显示:>请输入
3、rl.write(data[, key])
当使用readline.createInterface()创建实例时,,如果输入流为null或者undefined,则写入数据到输出流。 key是一个表示键序列的字面量对象,如果终端是TTY,则可用。
新闻热点
疑难解答
图片精选