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 相关文章推荐
在Windows上安装Node.js模块的方法
Sep 25 Javascript
Javascript数据结构与算法之列表详解
Mar 12 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
Mar 11 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
Aug 12 Javascript
js本地图片预览实现代码
Oct 09 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 Javascript
微信小程序实现底部弹出模态框
Nov 18 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 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
珊瑚虫IP库浅析
2007/02/15 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
jQuery实现菜单栏导航效果
2017/08/15 jQuery
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
python tkinter canvas使用实例
2019/11/04 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python打印不合法的文件名
2020/07/31 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
全球性的在线购物网站:Zapals
2017/03/22 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
大专生求职信
2014/06/29 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技