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 相关文章推荐
JS控件autocomplete 0.11演示及下载 1月5日已更新
Jan 09 Javascript
IE8 浏览器Cookie的处理
Jan 31 Javascript
JQuery 小练习(实例代码)
Aug 07 Javascript
JS getMonth()日期函数的值域是0-11
Feb 15 Javascript
JS 控件事件小结
Oct 31 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
Feb 05 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
JavaScript实现多重继承的方法分析
Jan 09 Javascript
JS实现判断数组是否包含某个元素示例
May 24 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
Jul 15 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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
JavaScript字符串对象
2017/01/14 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
python生成IP段的方法
2015/07/07 Python
python实现杨辉三角思路
2017/07/14 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
python 内置函数汇总详解
2019/09/16 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
大学教师年终总结的自我评价
2013/10/29 职场文书
实习公司领导推荐函
2014/05/21 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
天下第一关导游词
2015/02/06 职场文书
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫
MySQL普通表如何转换成分区表
2022/05/30 MySQL