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 相关文章推荐
Javascript 页面模板化很多人没有使用过的方法
Jun 05 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
node.js中使用node-schedule实现定时任务实例
Jun 03 Javascript
15个jquery常用方法、小技巧分享
Jan 13 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
javascript实现tab切换特效
Nov 12 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
ios中视频的最后一桢问题解决
May 14 Javascript
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
Vue.js组件使用props传递数据的方法
Oct 19 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
js闭包的用途详解
2014/11/09 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
美工的岗位职责
2013/11/14 职场文书
中专毕业生自荐信范文
2013/11/28 职场文书
实习单位评语
2014/04/26 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
垂直极限观后感
2015/06/08 职场文书
董事长秘书工作总结
2015/08/14 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书