Node.js API详解之 tty功能与用法实例分析


Posted in Javascript onApril 27, 2020

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
javascript String 的扩展方法集合
Jun 01 Javascript
JavaScript 使用技巧精萃(.net html
Apr 25 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
Mar 15 Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
Nov 13 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
JavaScript字符串_动力节点Java学院整理
Jun 27 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 #Javascript
element 中 el-menu 组件的无限极循环思路代码详解
Apr 26 #Javascript
微信小程序个人中心的列表控件实现代码
Apr 26 #Javascript
vue项目中自定义video视频控制条的实现代码
Apr 26 #Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 #Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
Apr 26 #Javascript
jquery检测上传文件大小示例
Apr 26 #jQuery
You might like
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP分享图片的生成方法
2018/04/25 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
Python复数属性和方法运算操作示例
2017/07/21 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
基于python实现地址和经纬度转换
2020/05/19 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
python 实现Harris角点检测算法
2020/12/11 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
利用python实现汉诺塔游戏
2021/03/01 Python
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
2015年党支部公开承诺书
2015/01/22 职场文书
员工表扬信怎么写
2015/05/05 职场文书
优秀志愿者感言
2015/08/01 职场文书
丧事答谢词大全
2015/09/30 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书