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 相关文章推荐
找到了一篇jQuery与Prototype并存的冲突的解决方法
Aug 29 Javascript
JavaScript入门教程(11) js事件处理
Jan 31 Javascript
60行js代码实现俄罗斯方块
Mar 31 Javascript
js中的内部属性与delete操作符介绍
Aug 10 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
Jun 13 Javascript
Express框架之connect-flash详解
May 31 Javascript
Angular4表单验证代码详解
Sep 03 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
May 10 Javascript
weui上传多图片,压缩,base64编码的示例代码
Jun 22 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在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
javascript web页面刷新的方法收集
2009/07/02 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python中实现栈的三种方法
2020/12/19 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
劳资专员岗位职责
2013/12/27 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
党支部三会一课计划
2014/09/24 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server