當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js readline.createInterface(options)用法及代碼示例


readline.createInterface(options)

曆史
版本變化
v15.14.0、v14.18.0

現在支持signal 選項。

v15.8.0、v14.18.0

現在支持history 選項。

v13.9.0

現在支持tabSize 選項。

v8.3.0、v6.11.4

刪除 crlfDelay 選項的最大限製。

v6.6.0

現在支持crlfDelay 選項。

v6.3.0

現在支持prompt 選項。

v6.0.0

historySize 選項現在可以是0

v0.1.98

添加於:v0.1.98


參數
  • options <Object>
    • input <stream.Readable> 可讀流聽。這個選項是必需的.
    • output <stream.Writable> Writable 流將讀取行數據寫入。
    • completer <Function> 用於選項卡自動完成的可選函數。
    • terminal <boolean> true 如果 inputoutput 流應被視為 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}`);
});

如果此實例的terminaltrue,那麽如果output 流定義了output.columns 屬性並在列發生更改時在output 上發出'resize' 事件( process.stdout 是 TTY 時會自動執行此操作)。

使用 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]);
}

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 readline.createInterface(options)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。