1. 程式人生 > 程式設計 >Node.js API詳解之 tty功能與用法例項分析

Node.js API詳解之 tty功能與用法例項分析

本文例項講述了Node.js API詳解之 tty功能與用法。分享給大家供大家參考,具體如下:

tty 可以理解為終端的意思。tty 模組提供終端相關的介面,用來獲取終端的行數列數等。

通過 const tty = require(‘tty'); 的方式引用 tty 模組

process.stdout.isTTY

說明:

此屬性位於 process 模組,用來判斷 Node.js 是否執行在一個 TTY 環境中

demo:

console.log(process.stdout.isTTY)
//true

tty.ReadStream 類

說明:

tty.ReadStream 類是 net.Socket 的一個子類,表示 TTY 的可讀部分。

正常情況下,process.stdin 是 Node.js 程序中唯一的 tty.ReadStream 例項,無需建立更多的例項

也就是說不需要我們手動 new 一個例項,直接使用 process.stdin 即可。

readStream.isRaw

說明:

是否為原始模式,預設值為 false 。如果TTY被配置成原始模式,該屬性值為 true

demo:

console.log(process.stdin.isRaw)
//false

readStream.setRawMode(mode)

說明:

該方法用來將 TTY 配置為原始模式。原始模式下,輸入按字元逐個生效,終端對字元的所有特殊處理會被禁用,包括應答輸入的字元。 該模式中 CTRL+C 不再產生 SIGINT。

mode:傳遞 true 或者 false 來關閉和開啟原始模式,對應 readStream.isRaw 的值也會發生改變。

demo:

process.stdin.setRawMode(true); // 開啟原始模式
console.log(process.stdin.isRaw);
//true
 
process.stdin.setRawMode(false); // 關閉原始模式
console.log(process.stdin.isRaw);
//false

tty.WriteStream 類

說明:

tty.WriteStream 類是 net.Socket 的一個子類,表示 TTY 的可寫部分。

正常情況下,process.stdout 和 process.stderr 是 Node.js 程序中唯一的 tty.WriteStream 例項,無需建立更多的例項。

writeStream.columns

說明:

此屬性用來表示當前TTY具有的列數,當resize時間被觸發時,該屬性會被更新。

demo:

console.log(process.stdout.columns);
//88

writeStream.rows

說明:

次屬性用來表示當前TTY具有的行數,當resize時間被觸發時,該屬性會被更新。

demo:

console.log(process.stdout.rows);
//40

Event: resize

說明:

當TTY視窗發生變化時,會觸發resize事件。

demo:

process.stdout.on('resize',() => {
 console.log('視窗大小發生變化!');
 console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
// > 視窗大小發生變化!
// 86x40
// > 視窗大小發生變化!
// 85x40
// > 視窗大小發生變化!
// 84x40

tty.isatty(fd)

說明:

如果給定的 fd 有關聯 TTY,則返回 true,否則返回 false。

fd 數值型別的檔案描述符。

demo:

console.log(tty.isatty(2));
//true
console.log(tty.isatty(200));
//false

希望本文所述對大家node.js程式設計有所幫助。