readline.createInterface(options)
options
<Object>input
<stream.Readable> 要监听的可读流。此选项是必需的。output
<stream.Writable> 将逐行读取数据写入的可写流。completer
<Function> 用于 Tab 自动补全的可选函数。terminal
<boolean> 如果input
和output
应该被视为 TTY,并且写入 ANSI/VT100 转义码,则为true
。 默认值: 实例化时在output
流上检查isTTY
。historySize
<number> 保留的最大历史记录行数。 要禁用历史记录,请将此值设置为0
。 仅当用户或内部output
检查将terminal
设置为true
时,此选项才有意义,否则根本不会初始化历史记录缓存机制。 默认值:30
。prompt
- 要使用的提示字符串。默认值:'> '
。crlfDelay
<number> 如果\r
与\n
之间的延迟超过crlfDelay
毫秒,则\r
和\n
将被视为单独的行尾输入。crlfDelay
将被强制转换为不小于100
的数字。 可以设置为Infinity
, 这种情况下,\r
后跟\n
将始终被视为单个换行符(对于使用\r\n
行分隔符的文件读取可能是合理的)。 默认值:100
。removeHistoryDuplicates
<boolean> 如果为true
, 则当添加到历史列表的新输入行与旧的输入行重复时,将从列表中删除旧行。 默认值:false
。escapeCodeTimeout
<number>readline
将会等待一个字符的持续时间(当以毫秒为单位读取模糊键序列时,可以使用输入读取到目前为止形成完整的键序列,并且可以采取额外的输入来完成更长的键序列)。 默认值:500
。tabSize
<integer> 制表符的空格数(最小值为 1)。默认值:8
。
readline.createInterface()
方法创建一个新的 readline.Interface
实例。
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
一旦创建了 readline.Interface
实例,最常见的用例是监听 'line'
事件:
rl.on('line', (line) => {
console.log(`接收到:${line}`);
});
如果此实例的 terminal
为 true
,则若它定义了一个 output.columns
属性则 output
流会获得最佳兼容性,并且如果或当列发生变化时, output
上会触发 'resize'
事件(当它是 TTY 时,process.stdout
会自动执行此操作)。
options
<Object>input
<stream.Readable> The Readable stream to listen to. This option is required.output
<stream.Writable> The Writable stream to write readline data to.completer
<Function> An optional function used for Tab autocompletion.terminal
<boolean>true
if theinput
andoutput
streams should be treated like a TTY, and have ANSI/VT100 escape codes written to it. Default: checkingisTTY
on theoutput
stream upon instantiation.historySize
<number> Maximum number of history lines retained. To disable the history set this value to0
. This option makes sense only ifterminal
is set totrue
by the user or by an internaloutput
check, otherwise the history caching mechanism is not initialized at all. Default:30
.prompt
<string> The prompt string to use. Default:'> '
.crlfDelay
<number> If the delay between\r
and\n
exceedscrlfDelay
milliseconds, both\r
and\n
will be treated as separate end-of-line input.crlfDelay
will be coerced to a number no less than100
. It can be set toInfinity
, in which case\r
followed by\n
will always be considered a single newline (which may be reasonable for reading files with\r\n
line delimiter). Default:100
.removeHistoryDuplicates
<boolean> Iftrue
, when a new input line added to the history list duplicates an older one, this removes the older line from the list. Default:false
.escapeCodeTimeout
<number> The durationreadline
will wait for a character (when reading an ambiguous key sequence in milliseconds one that can both form a complete key sequence using the input read so far and can take additional input to complete a longer key sequence). Default:500
.tabSize
<integer> The number of spaces a tab is equal to (minimum 1). Default:8
.
The readline.createInterface()
method creates a new readline.Interface
instance.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Once the readline.Interface
instance is created, the most common case is to
listen for the 'line'
event:
rl.on('line', (line) => {
console.log(`Received: ${line}`);
});
If terminal
is true
for this instance then the output
stream will get
the best compatibility if it defines an output.columns
property and emits
a 'resize'
event on the output
if or when the columns ever change
(process.stdout
does this automatically when it is a TTY).