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的IE和Firefox(火狐)兼容性的问题总结及常用例子
May 21 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
微信小程序授权获取用户详细信息openid的实例详解
Sep 20 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
vue cli 全面解析
Feb 28 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
javascript中toFixed()四舍五入使用方法详解
Sep 28 Javascript
简单谈谈javascript高级特性
Sep 04 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 Javascript
js实现验证码干扰(动态)
Feb 23 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
各种战术和打法的原创者
2020/03/04 星际争霸
德生9700DX电路分析
2021/03/02 无线电
destoon整合UCenter图文教程
2014/06/21 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python实用日期时间处理方法汇总
2015/05/09 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
linux安装python修改默认python版本方法
2019/03/31 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
python交互模式基础知识点学习
2020/06/18 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
成事在人观后感
2015/06/16 职场文书
校园开放日新闻稿
2015/07/17 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
基于python实现银行管理系统
2021/04/20 Python