readline.createInterface(options)
历史
版本 | 变化 |
---|---|
v15.14.0、v14.18.0 | 现在支持 |
v15.8.0、v14.18.0 | 现在支持 |
v13.9.0 | 现在支持 |
v8.3.0、v6.11.4 | 删除 |
v6.6.0 | 现在支持 |
v6.3.0 | 现在支持 |
v6.0.0 |
|
v0.1.98 | 添加于:v0.1.98 |
参数
options
<Object>input
<stream.Readable> 可读流听。这个选项是必需的.output
<stream.Writable> Writable 流将读取行数据写入。completer
<Function> 用于选项卡自动完成的可选函数。terminal
<boolean>true
如果input
和output
流应被视为 TTY,并写入 ANSI/VT100 转义码。 默认: 在实例化时检查output
流上的isTTY
。history
<string[]> 历史行的初始列表。只有当terminal
由用户或内部output
检查设置为true
时,此选项才有意义,否则根本不会初始化历史缓存机制。 默认:[]
。historySize
<number> 保留的最大历史行数。要禁用历史记录,请将此值设置为0
。只有当terminal
被用户或内部output
检查设置为true
时,此选项才有意义,否则根本不会初始化历史缓存机制。 默认:30
。removeHistoryDuplicates
<boolean> 如果true
,当添加到历史列表的新输入行与旧输入行重复时,这将从列表中删除旧行。 默认:false
。prompt
<string> 要使用的提示字符串。 默认:'> '
。crlfDelay
<number> 如果\r
和\n
之间的延迟超过crlfDelay
毫秒,则\r
和\n
将被视为单独的行尾输入。crlfDelay
将被强制为不小于100
的数字。它可以设置为Infinity
,在这种情况下\r
后跟\n
将始终被视为单个换行符(对于带有\r\n
行分隔符的 reading files 可能是合理的)。 默认:100
。escapeCodeTimeout
<number> 持续时间readline
将等待一个字符(当读取一个以毫秒为单位的模棱两可的键序列时,它既可以使用目前读取的输入形成完整的键序列,又可以采用额外的输入来完成更长的键顺序)。 默认:500
。tabSize
<integer> 制表符的空格数等于(最小 1)。 默认:8
。signal
<AbortSignal> 允许使用 AbortSignal 关闭接口。中止信号将在接口内部调用close
。
- 返回: <readline.Interface>
readline.createInterface()
方法创建一个新的 readline.Interface
实例。
const readline = require('node:readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
创建 readline.Interface
实例后,最常见的情况是监听 'line'
事件:
rl.on('line', (line) => {
console.log(`Received: ${line}`);
});
如果此实例的terminal
是true
,那么如果output
流定义了output.columns
属性并在列发生更改时在output
上发出'resize'
事件(
是 TTY 时会自动执行此操作)。process.stdout
使用 stdin
作为输入创建 readline.Interface
时,程序在收到 EOF character 之前不会终止。要在不等待用户输入的情况下退出,请调用 process.stdin.unref()
。
的使用completer
函数#
completer
函数将用户输入的当前行作为参数,并返回带有 2 个条目的 Array
:
- 一个
Array
与完成匹配的条目。 - 用于匹配的子字符串。
例如:[[substr1, substr2, ...], originalsubstring]
。
function completer(line) {
const completions = '.help .error .exit .quit .q'.split(' ');
const hits = completions.filter((c) => c.startsWith(line));
// Show all completions if none found
return [hits.length ? hits : completions, line];
}
如果 completer
函数接受两个参数,则可以异步调用它:
function completer(linePartial, callback) {
callback(null, [['123'], linePartial]);
}
相关用法
- Node.js readline.emitKeypressEvents(stream[, interface])用法及代码示例
- Node.js readlinePromises.createInterface(options)用法及代码示例
- Node.js readStream.isRaw用法及代码示例
- Node.js readable.push(chunk[, encoding])用法及代码示例
- Node.js readStream.setRawMode()用法及代码示例
- Node.js readStream.isTTY用法及代码示例
- Node.js stream.Readable readable[Symbol.asyncIterator]()用法及代码示例
- Node.js readable._construct(callback)用法及代码示例
- Node.js http2.Http2ServerRequest request.url用法及代码示例
- Node.js request.socket用法及代码示例
- Node.js http.ServerResponse response.statusCode用法及代码示例
- Node.js http.ClientRequest request.getHeaders()用法及代码示例
- Node.js http2.Http2ServerRequest request.headers用法及代码示例
- Node.js http.ClientRequest request.setHeader(name, value)用法及代码示例
- Node.js response.writeContinue()用法及代码示例
- Node.js http2.Http2ServerResponse response.removeHeader(name)用法及代码示例
- Node.js response.removeHeader()用法及代码示例
- Node.js http.ServerResponse response.getHeaderNames()用法及代码示例
- Node.js request.writableEnded用法及代码示例
- Node.js http.ClientRequest request.getHeaderNames()用法及代码示例
- Node.js http2.Http2ServerResponse response.hasHeader(name)用法及代码示例
- Node.js http.ClientRequest request.removeHeader(name)用法及代码示例
- Node.js http.ClientRequest request.getHeader(name)用法及代码示例
- Node.js http.ServerResponse response.removeHeader(name)用法及代码示例
- Node.js http.ClientRequest request.reusedSocket用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 readline.createInterface(options)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。