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 相关文章推荐
extjs表格文本启用选择复制功能具体实现
Oct 11 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
Jul 31 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
Mar 01 Javascript
vue小白入门教程
Apr 02 Javascript
node-red File读取好保存实例讲解
Sep 11 Javascript
js实现简单页面全屏
Sep 17 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
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
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
解决python super()调用多重继承函数的问题
2019/06/26 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Django中间件基础用法详解
2019/07/18 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python绘图模块之利用turtle画图
2021/02/12 Python
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
学院领导推荐信
2013/10/30 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书