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 相关文章推荐
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
jquery的ajax简单结构示例代码
Feb 17 Javascript
JavaScript获取当前页面上的指定对象示例代码
Feb 28 Javascript
深入分析原生JavaScript事件
Dec 29 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
JavaScript数据类型学习笔记分享
Sep 01 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
vue init失败简单解决方法(终极版)
Dec 22 Javascript
JS实现模糊查询带下拉匹配效果
Jun 21 Javascript
小程序hover-class点击态效果实现
Feb 26 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
jquery ajax执行后台方法
2010/03/18 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
checkbox使用示例
2013/08/23 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python lxml模块安装教程
2015/06/02 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
python读取与处理netcdf数据方式
2020/02/14 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
高中军训感言200字
2014/02/23 职场文书
活动总结书
2014/05/08 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
在js中修改html body的样式
2021/11/11 Javascript