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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。