Buffers em Node.js
Introdução ao Buffer em Node.js
O Buffer
é um objeto nativo do Node.js que permite trabalhar com dados binários de maneira eficiente, ele representa um pedaço de memória de tamanho fixo, você pode pensar em um buffer como um array de inteiros, em que cada unidade representa um byte de dados, ele é muito útil para manipular arquivos, imagens, vídeos e outros tipos de dados.
Tá mais onde Buffers são usados na prática?
Buffers
está relacionado a Streams
, por exemplo quando você precisa ler arquivo gigantesco, você normalmente quebra esse arquivo em chunks
e vai processando ele acada chunk que chega, ai está essas chucks são gerenciadas pelo buffer, veja mais
Outro exemplo é quando você está assistindo um vídeo no Youtube e você pula para o final do vídeo você está baixando dados mais rápido do que está os vendo, e o seu browser os bufferiza, ou seja ele não precisa baixar o vídeo todo para ter amostrar aquele momento no vídeo, ele apenas pega o aquele pedaço e reproduz.
Métodos úteis para manipular o Buffer
O Buffer
possui vários métodos úteis para manipular os dados binários. Alguns exemplos incluem:
Buffer.from(string, encoding)
: cria um novo objeto Buffer a partir de uma string e uma codificação específica.Buffer.concat(list, totalLength)
: concatena vários buffers em um único buffer.buffer.slice(start, end)
: retorna uma nova instância de buffer contendo uma fatia dos dados do buffer original.buffer.copy(targetBuffer, targetStart, sourceStart, sourceEnd)
: copia os dados de um buffer para outro.buffer.toString(encoding, start, end)
: retorna uma string representando os dados do buffer com uma codificação específica.
Vejamos alguns exemplos de como esses métodos podem ser usados:
// Criando um novo buffer a partir de uma string
const buffer1 = Buffer.from("Hello World", "utf8");
console.log(buffer1); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
// Concatenando vários buffers
const buffer2 = Buffer.from("Hello");
const buffer3 = Buffer.from(" World");
const buffer4 = Buffer.concat([buffer2, buffer3]);
console.log(buffer4.toString()); // "Hello World"
// Criando uma fatia de um buffer
const buffer5 = Buffer.from("Hello World");
const buffer6 = buffer5.slice(6, 11);
console.log(buffer6.toString()); // "World"
// Copiando dados de um buffer para outro
const buffer7 = Buffer.from("Hello World");
const buffer8 = Buffer.alloc(11);
buffer7.copy(buffer8, 0, 6, 11);
console.log(buffer8.toString()); // "World"
Agradecimentos
Obrigado por ler até aqui ❤️, acredito que apenas isso já é o suficiente, caso tenha algo a mais, me diga nos comentários para eu adicionar.
fontes
Documentação oficial, nodejs.reativa, freecodecamp, chat GPT para gerar os exemplos, medium para a imagem