- assert断言
- async_hooks异步钩子
- async_hooks/context异步上下文
- buffer缓冲区
- C++插件
- C/C++插件(使用Node-API)
- C++嵌入器
- child_process子进程
- cluster集群
- CLI命令行
- console控制台
- Corepack核心包
- crypto加密
- crypto/webcrypto网络加密
- debugger调试器
- deprecation弃用
- dgram数据报
- diagnostics_channel诊断通道
- dns域名服务器
- domain域
- Error错误
- events事件触发器
- fs文件系统
- global全局变量
- http超文本传输协议
- http2超文本传输协议2.0
- https安全超文本传输协议
- inspector检查器
- Intl国际化
- module模块
- module/cjsCommonJS模块
- module/esmECMAScript模块
- module/package包模块
- net网络
- os操作系统
- path路径
- perf_hooks性能钩子
- policy安全策略
- process进程
- punycode域名代码
- querystring查询字符串
- readline逐行读取
- repl交互式解释器
- report诊断报告
- stream流
- stream/web网络流
- string_decoder字符串解码器
- test测试
- timers定时器
- tls安全传输层
- trace_events跟踪事件
- tty终端
- url网址
- util实用工具
- v8引擎
- vm虚拟机
- wasi网络汇编系统接口
- worker_threads工作线程
- zlib压缩
Node.js v18.7.0 文档
- Node.js 18.7.0
-
►
目录
- readline 逐行读取
InterfaceConstructor
类'close'
事件'line'
事件'history'
事件'pause'
事件'resume'
事件'SIGCONT'
事件'SIGINT'
事件'SIGTSTP'
事件rl.close()
rl.pause()
rl.prompt([preserveCursor])
rl.question(query[, options], callback)
rl.resume()
rl.setPrompt(prompt)
rl.getPrompt()
rl.write(data[, key])
rl[Symbol.asyncIterator]()
rl.line
rl.cursor
rl.getCursorPos()
- Promises API
- Callback API
readline.emitKeypressEvents(stream[, interface])
- 示例:微型 CLI
- 示例:逐行读取文件流
- TTY 快捷键
- readline 逐行读取
-
►
索引
- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS模块
- module/esm ECMAScript模块
- module/package 包模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- policy 安全策略
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- stream 流
- stream/web 网络流
- string_decoder 字符串解码器
- test 测试
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
- ► 其他版本
- 文档搜索
- 会员登录
目录
- readline 逐行读取
InterfaceConstructor
类'close'
事件'line'
事件'history'
事件'pause'
事件'resume'
事件'SIGCONT'
事件'SIGINT'
事件'SIGTSTP'
事件rl.close()
rl.pause()
rl.prompt([preserveCursor])
rl.question(query[, options], callback)
rl.resume()
rl.setPrompt(prompt)
rl.getPrompt()
rl.write(data[, key])
rl[Symbol.asyncIterator]()
rl.line
rl.cursor
rl.getCursorPos()
- Promises API
- Callback API
readline.emitKeypressEvents(stream[, interface])
- 示例:微型 CLI
- 示例:逐行读取文件流
- TTY 快捷键
readline 逐行读取#
node:readline
模块提供了用于从可读流(例如 process.stdin
)每次一行地读取数据的接口。
InterfaceConstructor
类#
InterfaceConstructor
类的实例是使用 readlinePromises.createInterface()
或 readline.createInterface()
方法构造的。
每个实例都与单个 input
可读流和单个 output
可写流相关联。
output
流用于打印到达并从 input
流中读取的用户输入的提示。
'close'
事件#
发生以下情况之一时会触发 'close'
事件:
'line'
事件#
每当 input
流接收到行尾输入(\n
、\r
或 \r\n
)时,则会触发 'line'
事件。
这通常发生在用户按下 回车 或 返回 时。
'history'
事件#
每当历史数组发生更改时,则会触发 'history'
事件。
'pause'
事件#
发生以下情况之一时会触发 'pause'
事件:
'resume'
事件#
每当 input
流恢复时,则会触发 'resume'
事件。
'SIGCONT'
事件#
当之前使用 Ctrl+Z(即 SIGTSTP
)移动到后台的 Node.js 进程然后使用 fg(1p)
返回到前台时,则会触发 'SIGCONT'
事件。
'SIGINT'
事件#
每当 input
流接收到 Ctrl+C 输入(通常称为 SIGINT
)时,则会触发 'SIGINT'
事件。
如果在 input
流接收到 SIGINT
时没有注册 'SIGINT'
事件监听器,则将触发 'pause'
事件。
'SIGTSTP'
事件#
当 input
流接收到 Ctrl+Z 输入(通常称为 SIGTSTP
)时,则会触发 'SIGTSTP'
事件。
如果 input
流接收到 SIGTSTP
时没有注册 'SIGTSTP'
事件监听器,则 Node.js 进程将被发送到后台。
rl.close()
#
rl.close()
方法关闭 InterfaceConstructor
实例并放弃对 input
和 output
流的控制。
当调用时,将触发 'close'
事件。
rl.pause()
#
rl.pause()
方法暂停 input
流,允许它稍后在必要时恢复。
rl.prompt([preserveCursor])
#
rl.prompt()
方法将配置为 prompt
的 InterfaceConstructor
实例写入 output
中的新行,以便为用户提供用于提供输入的新位置。
rl.question(query[, options], callback)
#
rl.question()
方法通过将 query
写入 output
来显示 query
,等待在 input
上提供用户输入,然后调用 callback
函数,将提供的输入作为第一个参数传入。
rl.resume()
#
如果 input
流已暂停,则 rl.resume()
方法会恢复该流。
rl.setPrompt(prompt)
#
rl.setPrompt()
方法设置了在调用 rl.prompt()
时将写入 output
的提示。
rl.getPrompt()
#
rl.getPrompt()
方法返回 rl.prompt()
使用的当前提示。
rl.write(data[, key])
#
rl.write()
方法会将 data
或由 key
标识的键序列写入 output
。
仅当 output
是 TTY 文本终端时才支持 key
参数。
有关组合键的列表,请参阅 TTY 快捷键。
rl[Symbol.asyncIterator]()
#
创建 AsyncIterator
对象,该对象遍历输入流中的每一行作为字符串。
此方法允许通过 for await...of
循环异步迭代 InterfaceConstructor
对象。
rl.line
#
节点正在处理的当前输入数据。
rl.cursor
#
相对于 rl.line
的光标位置。
rl.getCursorPos()
#
返回光标相对于输入提示 + 字符串的实际位置。 长输入(换行)字符串以及多行提示都包含在计算中。
Promises API#
readlinePromises.Interface
类#
readlinePromises.Interface
类的实例是使用 readlinePromises.createInterface()
方法构造的。
每个实例都与单个 input
可读流和单个 output
可写流相关联。
output
流用于打印到达并从 input
流中读取的用户输入的提示。
rl.question(query[, options])
#
rl.question()
方法通过将 query
写入 output
来显示 query
,等待在 input
上提供用户输入,然后调用 callback
函数,将提供的输入作为第一个参数传入。
readlinePromises.Readline
类#
new readlinePromises.Readline(stream[, options])
#
rl.clearLine(dir)
#
rl.clearLine()
方法在待处理动作的内部列表中添加一个动作,该动作在 dir
标识的指定方向上清除关联 stream
的当前行。
调用 rl.commit()
看看这个方法的效果,除非 autoCommit: true
传给了构造函数。
rl.clearScreenDown()
#
rl.clearScreenDown()
方法向待处理动作的内部列表添加一个动作,该动作从光标向下的当前位置清除关联流。
调用 rl.commit()
看看这个方法的效果,除非 autoCommit: true
传给了构造函数。
rl.commit()
#
rl.commit()
方法将所有待处理的操作发送到关联的 stream
并清除待处理操作的内部列表。
rl.cursorTo(x[, y])
#
rl.cursorTo()
方法向待处理动作的内部列表添加一个动作,该动作将光标移动到相关 stream
中指定的位置。
调用 rl.commit()
看看这个方法的效果,除非 autoCommit: true
传给了构造函数。
rl.moveCursor(dx, dy)
#
rl.moveCursor()
方法向待处理动作的内部列表添加一个动作,该动作相对于其在关联 stream
中的当前位置移动光标。
调用 rl.commit()
看看这个方法的效果,除非 autoCommit: true
传给了构造函数。
rl.rollback()
#
rl.rollback
方法清除内部待处理操作列表,而不将其发送到关联的 stream
。
readlinePromises.createInterface(options)
#
readlinePromises.createInterface()
方法创建新的 readlinePromises.Interface
实例。
completer 函数的使用#
completer
函数将用户输入的当前行作为参数,并返回包含 2 个条目的 Array
:
Callback API#
readline.Interface
类#
readline.Interface
类的实例是使用 readline.createInterface()
方法构造的。
每个实例都与单个 input
可读流和单个 output
可写流相关联。
output
流用于打印到达并从 input
流中读取的用户输入的提示。
rl.question(query[, options], callback)
#
rl.question()
方法通过将 query
写入 output
来显示 query
,等待在 input
上提供用户输入,然后调用 callback
函数,将提供的输入作为第一个参数传入。
readline.clearLine(stream, dir[, callback])
#
readline.clearLine()
方法在 dir
标识的指定方向上清除给定 TTY 流的当前行。
readline.clearScreenDown(stream[, callback])
#
readline.clearScreenDown()
方法从光标的当前位置向下清除给定的 TTY 流。
readline.createInterface(options)
#
readline.createInterface()
方法创建新的 readline.Interface
实例。
completer 函数的使用#
completer
函数将用户输入的当前行作为参数,并返回包含 2 个条目的 Array
:
readline.cursorTo(stream, x[, y][, callback])
#
readline.cursorTo()
方法将光标移动到给定的 TTY stream
中的指定位置。
readline.moveCursor(stream, dx, dy[, callback])
#
readline.moveCursor()
方法相对于它在给定的 TTY stream
中的当前位置移动光标。
readline.emitKeypressEvents(stream[, interface])
#
readline.emitKeypressEvents()
方法使给定的可读流开始触发与接收到的输入相对应的 'keypress'
事件。
示例:微型 CLI#
下面的例子说明了使用 readline.Interface
类来实现一个微型的命令行界面:
示例:逐行读取文件流#
readline
的一个常见用例是每次一行地消费输入文件。
最简单的方式是利用 fs.ReadStream
API 和 for await...of
循环: