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的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
基于node.js实现微信支付退款功能
Dec 19 Javascript
详解VUE2.X过滤器的使用方法
Jan 11 Javascript
select标签设置默认选中的选项方法
Mar 02 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
vue组件三大核心概念图文详解
May 30 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
ZK中使用JS读取客户端txt文件内容问题
Nov 07 Javascript
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
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的ajax简单实例
2014/02/27 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
ajax异步请求详解
2017/01/06 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python的debug实用工具 pdb详解
2019/07/12 Python
python3 字符串知识点学习笔记
2020/02/08 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
Europcar比利时:租车
2019/08/26 全球购物
SQL SERVER面试资料
2013/03/30 面试题
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
态度决定一切演讲稿
2014/05/20 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
校园之声广播稿
2015/08/18 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
Django与数据库交互的实现
2021/06/03 Python
python如何利用traceback获取详细的异常信息
2021/06/05 Python
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏