TTY

TTY 模块包含 tty.ReadStreamtty.WriteStream 两个类。在大多数情况下,开发者都需要直接调用该模块。

当 Node.js 检测到当前环境处于 TTY 上下文时,则 process.stdin 会指向一个 tty.ReadStream 实例,process.stdout 会指向一个 tty.WriteStream 实例。检测 Node.js 是否处于 TTY 上下文有一个更方便的方式,那就是检查 process.stdout.isTTY

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

Class: ReadStream

该类是 net.socket 的子类,表示 TTY 中的可读部分。在大多数情况下,任何 Node.js 程序(isatty(0) 为 true)中的 process.stdin 都是唯一的 tty.ReadStream 实例。

rs.isRaw

布尔值,默认值为 false,标示当前 tty.ReadStream 实例是否为 raw 状态。

rs.setRawMode(mode)

mode 的值必须为 true 或者 false,该值决定了 tty.ReadStream 为原始设备或默认设置,并且它也决定了 isRaw 的值。

Class: WriteStram

该类是 net.socket 的子类,表示 TTY 中的可写部分。在大多数情况下,任何 Node.js 程序(isatty(0) 为 true)中的 process.stdout 都是唯一的 tty.WriteStream 实例。

事件:'resize'

columnsrows 属性变化时,refreshSize() 方法就会触发该事件:

process.stdout.on('resize', () => {
  console.log('screen size has changed!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

ws.columns

数值,标示 TTY 当前的列数,该属性会被 resize 事件更新。

ws.rows

数值,标示 TTY 当前的行数,该属性会被 resize 事件更新。

tty.isatty(fd)

如果 fd 参数和终端有关,那么该方法返回 true,否则返回 false

tty.setRawMode(mode)

该方法已被废除,请使用 `tty.ReadStream#setRawMode()` 替代,比如 `process.stdin.setRawMode`。

results matching ""

    No results matching ""