tty对于终端的运用
tty模块提供tty ReadStream和tty WriteStream类。在大多数情况下,不需要或不可能直接使用此模块。但是,可以通过以下方式访问它:
const tty = require('tty');
在大多数情况下,应用程序几乎没有理由手动创建tty ReadStream和tty WriteStream类的实例。
process.stdout.on('resize', () => {
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
使用此选项可确定终端支持的颜色。由于终端颜色的性质,可能会出现假阳性或假阴性。这取决于过程信息和环境变量,这些变量可能与所使用的终端有关。可以传入env对象来模拟特定终端的使用。这对于检查特定环境设置的行为非常有用。
要强制实施特定的颜色支持,请使用以下环境设置之一。
据 stdout
是否支持至少 16 种颜色,返回 true 或 false。根据 stdout
是否支持至少 256 种颜色,返回 true 或 false。
process.stdout.hasColors();
process.stdout.hasColors(256);
process.stdout.hasColors({ TMUX: '1' });
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// 返回 false(环境设置假装支持 2 ** 8 种颜色)。
加密模块
加密模块要求节点运行以支持OpenSSL。此模块使用安全证书支持HTTPS安全网络和HTTP连接。该模块还为OpenSSL哈希、hmac、密码、解密、签名和验证方法(用于Node)提供了一层封装。
创建证书对象。参数详细信息是由键值对组成的字典。
Key:包含PEM编码的私钥的字符串
Cert:包含PEM编码证书的字符串
Ca:包含PEM编码的可信数字中心认证证书的字符串或字符串列表
const util = require('util');
async function fn() {
return 'hello world';
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
可以在 NODE_DEBUG 环境变量中指定多个逗号分隔的 section 名称:NODE_DEBUG=fs,net,tls。
可选的 callback 参数可用于用一个不同的函数替换日志函数,该函数没有任何初始化或不必要的封装。
const util = require('util');
let debuglog = util.debuglog('internals', (debug) => {
debuglog = debug;
});
如果启用该部分,则替换为优化测试的日志记录函数
Assert
此模块用于编写单元测试。您可以使用require('assert')访问此模块。
明确肯定失败(实际、预期、消息、运算符)
此函数使用参数运算符测试实际值和预期值是否相等。
明确肯定ok(值,[message])
测试参数值是否为true,此函数和断言Equal(true、value、message)是否等效。
明确肯定相等(实际值,预期值,[message])
此函数是一个简单的测试函数。使用运算符“==”比较实际值和预期值是否相等。
明确肯定notEqual(实际值,预期值,[message])
此函数是一个简单的测试函数,使用运算符“=”比较实际值和预期值是否相等。
明确肯定deepEqual(实际值,预期值,[message])
执行深度比较以实现相等。注:三种比较的差异(感谢tytsim):
a = {'a':'1','b':'2'};
b = {'b':'2','a':'1'};
equal(a, b) 返回false
deepEqual(a, b) 返回true
strictEqual(a, b) 返回false
事件驱动程序
该模型非常高效且可扩展,因为web服务器总是接受请求,而无需等待任何读或写操作。(也称为非阻塞IO或事件驱动IO)
在事件驱动模型中,将生成一个主循环来监听事件。当检测到事件时,将触发回调函数。
创建 eventEmitter 对象
var events = require('events');
var eventEmitter = new events.EventEmitter();
eventEmitter.on('eventName', eventHandler);
实例:
引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandler = function connected() {
console.log('连接成功。');
// 触发 data_received 事件
eventEmitter.emit('data_received');
}
// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
console.log('数据接收成功。');
});
// 触发 connection 事件
eventEmitter.emit('connection');
console.log("程序执行完毕。");
返回有关V8堆空间的统计信息,即组成V8堆的碎片。无法保证堆空间的排序和堆空间的可用性,因为统计信息是通过V8 GetHeapSpaceStatistics函数提供的,并且可能会从一个V8版本更改到下一个版本。
返回的值是包含以下属性的对象数组
[
{
"space_name": "new_space",
"space_size": 2063872,
"space_used_size": 951112,
"space_available_size": 80824,
"physical_space_size": 2063872
},
{
"space_name": "old_space",
"space_size": 3090560,
"space_used_size": 2493792,
"space_available_size": 0,
"physical_space_size": 3090560
},
{
"space_name": "code_space",
"space_size": 1260160,
"space_used_size": 644256,
"space_available_size": 960,
"physical_space_size": 1260160
},
{
"space_name": "map_space",
"space_size": 1094160,
"space_used_size": 201608,
"space_available_size": 0,
"physical_space_size": 1094160
},
{
"space_name": "large_object_space",
"space_size": 0,
"space_used_size": 0,
"space_available_size": 1490980608,
"physical_space_size": 0
}
]