Node.js v8.2.1 文档


tty (终端)#

查看英文版 / 参与翻译

稳定性: 2 - 稳定的

tty 模块提供了 tty.ReadStream 类和 tty.WriteStream 类。 大多数情况下无需直接使用此模块。 它可以通过以下方式使用:

const tty = require('tty');

当 Node.js 检测到它正被运行在一个文本终端(TTY)的上下文中时,则 process.stdin 默认会被初始化为一个 tty.ReadStream 实例,process.stdoutprocess.stderr 默认会被初始化为一个 tty.WriteStream 实例。 判断 Node.js 是否正被运行在一个 TTY 上下文中的首选方法是去检查 process.stdout.isTTY 属性的值是否为 true

$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

大多数情况下,应用程序几乎没有理由创建 tty.ReadStream 类和 tty.WriteStream 类的实例。

tty.ReadStream 类#

查看英文版 / 参与翻译

tty.ReadStream 类是 net.Socket 的一个子类,表示一个 TTY 的可读部分。 正常情况下,process.stdin 是一个 Node.js 进程中唯一的 tty.ReadStream 实例,没有理由创建更多的实例。

readStream.isRaw#

查看英文版 / 参与翻译

一个 boolean 值,如果 TTY 当前被配置成作为一个原始设备来操作,则返回 true。 默认为 false

readStream.setRawMode(mode)#

查看英文版 / 参与翻译

允许配置 tty.ReadStream 作为一个原始设备来操作。

当在原始模式中,输入总是按字符生效,但不包括修饰符。 此外,终端对字符的所有特殊处理会被禁用,包括应答输入的字符。 注意,该模式中 CTRL+C 不再产生一个 SIGINT

  • mode <boolean> 如果为 true,则配置 tty.ReadStream 作为一个原始设备来操作。 如果为 false,则配置 tty.ReadStream 以默认模式来操作。 readStream.isRaw 属性会被设为对应的值。

tty.WriteStream 类#

查看英文版 / 参与翻译

tty.WriteStream 类是 net.Socket 的一个子类,表示一个 TTY 的可写部分。 正常情况下,process.stdoutprocess.stderr 是一个 Node.js 进程中唯一的 tty.WriteStream 实例,没有理由创建更多的实例。

'resize' 事件#

查看英文版 / 参与翻译

writeStream.columns 属性或 writeStream.rows 属性发生变化时触发 'resize' 事件。 监听器回调没有参数传入。

process.stdout.on('resize', () => {
  console.log('屏幕大小已改变!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

Note: On Windows resize events will be emitted only if stdin is unpaused (by a call to resume() or by adding a data listener) and in raw mode. It can also be triggered if a terminal control sequence that moves the cursor is written to the screen. Also, the resize event will only be signaled if the console screen buffer height was also changed. For example shrinking the console window height will not cause the resize event to be emitted. Increasing the console window height will only be registered when the new console window height is greater than the current console buffer size.

writeStream.columns#

查看英文版 / 参与翻译

一个 number,指明 TTY 当前具有的列数。 当 'resize' 事件被触发时,该属性会被更新。

writeStream.rows#

查看英文版 / 参与翻译

一个 number,指明 TTY 当前具有的行数。 当 'resize' 事件被触发时,该属性会被更新。

tty.isatty(fd)#

查看英文版 / 参与翻译

  • fd <number> 一个数值型的文件描述符。

如果给定的 fd 与一个 TTY 相关联,则 tty.isatty() 方法返回 true,否则返回 false