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的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
js动态修改input输入框的type属性(实现方法解析)
Nov 13 Javascript
使用jsonp完美解决跨域问题
Nov 27 Javascript
javascript实现倒计时(精确到秒)
Jun 26 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
jQuery滚动加载图片实现原理
Dec 14 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
May 25 Javascript
深入理解Vue nextTick 机制
Apr 28 Javascript
vue-父子组件和ref实例详解
Nov 10 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
详解 javascript对象创建模式
Oct 30 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,ajax实现分页
2008/03/27 PHP
php学习之function的用法
2012/07/14 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php编程每天必学之表单验证
2016/03/01 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
JavaScript 继承详解(二)
2009/07/13 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
在vue中使用console.log无效的解决
2020/08/09 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
Python实现简易Web爬虫详解
2018/01/03 Python
Python单元测试实例详解
2018/05/25 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
python openpyxl模块的使用详解
2021/02/25 Python
文秘专业个人求职信
2013/12/22 职场文书
2013年学期结束动员演讲稿
2014/01/07 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
库房保管员岗位职责
2014/04/07 职场文书
建筑结构施工求职信
2014/07/11 职场文书
教师职位说明书
2014/07/29 职场文书
创先争优个人承诺书
2014/08/30 职场文书
责任书格式
2015/01/29 职场文书
Mysql基础之常见函数
2021/04/22 MySQL