TTY
TTY 模块包含 tty.ReadStream
和 tty.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'
columns
或 rows
属性变化时,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`。