📜  Node.js 中的全局、进程和缓冲区

📅  最后修改于: 2022-05-13 01:56:23.381000             🧑  作者: Mango

Node.js 中的全局、进程和缓冲区

全局: node.js 中的全局对象在所有模块中都可用,并且在本地限定为它们各自的模块。

一些全局对象是:

  1. 出口
  2. 模块
  3. 要求
  4. __文件名
  5. __目录名

上面的对象和 require函数可以在任何地方访问而无需导入。

进程:进程对象是一个全局对象,它提供有关 node.js 进程的信息和控制权。由于它是全局的,它可以在项目中使用,而无需从任何模块导入。

它是 EventEmitter 类的一个实例,具有许多有用的方法,可以帮助我们更多地了解已发生的过程以及当前正在进行的过程。

过程中的重要事件:

beforeExit 事件:此事件在 Node.js 事件循环变得神圣并且没有安排额外的工作之前触发。一般情况下,Node.js 进程会在没有进程时退出,但在 'beforeExit' 上注册的监听器可以进行异步调用。

Javascript
const process = require('process');
 
process.on('beforeExit', (data) => {
  console.log('Process beforeExit event with code.');
});
 
process.on('exit', (data) => {
  console.log('Process exit event with code');
});
 
console.log('This code is rendered first.');


Javascript
process.on('exit', (data) => {
  console.log(`code execution is going to end `);
});


Javascript
var buf = Buffer.from('GeeksForGeeks');
console.log(buf.toString());


输出:

This code is rendered first.
Process beforeExit event with code.
Process exit event with code.

退出事件:当 Node.js 进程由于以下任一原因而即将退出时,会发出“退出”事件:

  • 显式调用 process.exit() 方法。
  • Node.js 事件循环不再需要执行任何额外的工作。

此时无法阻止事件循环的退出,一旦所有“退出”侦听器完成运行,Node.js 进程将终止。

Javascript

process.on('exit', (data) => {
  console.log(`code execution is going to end `);
});

输出:

code execution is going to end

除了以上两个主要事件之外,流程对象还附带了更多的事件。

Buffer: Node.js 中的 Buffer 类用于处理原始二进制数据。每个缓冲区对应于在 V8 之外分配的一些原始内存。缓冲区的行为有点像整数数组,但不可调整大小并且有一大堆专门用于二进制数据的方法。

创建缓冲区:

var buffer = Buffer.alloc(6); 
  • 输出:
This will print out 6 bytes of zero
var buffer = Buffer.from("Welcome to GeeksforGeeks!", "utf-8");
  • 输出:
This will print out a chain of values in utf-8

写入缓冲区:如果它包含两个参数,第一个参数是数据,第二个参数是编码类型。

buffer.write("GeeksForGeeks", "utf-8")

输出:

This will print out 13 as size of buffer

读取缓冲区:我们可以使用 toString() 方法读取缓冲区。

Javascript

var buf = Buffer.from('GeeksForGeeks');
console.log(buf.toString());

输出:

GeeksForGeeks