Node.js buffer forklaret

Hvad er buffere?

Binær er simpelthen et sæt eller en samling af 1og 0. Hvert nummer i en binær, hver 1 og 0 i et sæt kaldes lidt . Computeren konverterer dataene til dette binære format for at gemme og udføre operationer. For eksempel er følgende fem forskellige binære filer:

10, 01, 001, 1110, 00101011

JavaScript har ikke byte-typedata i kernens API. Til håndtering af binære data inkluderer Node.js en binær bufferimplementering med et globalt modul kaldet Buffer.

Oprettelse af en buffer

Der er forskellige måder, du kan oprette en buffer på Node.js. Du kan oprette en tom buffer med en størrelse på 10 byte.

const buf1 = Buffer.alloc(10);

Fra UTF-8-kodede strenge er oprettelsen sådan:

const buf2 = Buffer.from('Hello World!');

Der er forskellige accepterede kodninger, når du opretter en buffer:

  • ascii
  • utf-8
  • base64:
  • latin1
  • binær
  • hex

Der er tre separate funktioner tildelt i Buffer API til at bruge og oprette nye buffere. I ovenstående eksempler har vi set alloc()og from(). Den tredje er allocUnsafe().

const buf3 = Buffer.allocUnsafe(10);

Når denne funktion returneres, kan den indeholde gamle data, der skal overskrives.

Interaktioner med buffer

Der er forskellige interaktioner, der kan foretages med Buffer API. Vi vil dække de fleste af dem her. Lad os starte med at konvertere en buffer til JSON.

let bufferOne = Buffer.from('This is a buffer example.'); console.log(bufferOne); // Output:  let json = JSON.stringify(bufferOne); console.log(json); // Output: {"type": "Buffer", "data": [84,104,105,115,32,105,115,32,97,32,98,117,102,102,101,114,32,101,120,97,109,112,108,101,46]}

JSON angiver, at typen af ​​objekt, der transformeres, er en buffer og dens data. Konvertering af en tom buffer til JSON viser os, at den kun indeholder nuller.

const emptyBuf = Buffer.alloc(10); emptyBuf.toJSON(); // Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Bemærk, at Buffer API også giver en direkte funktion toJSON()til at konvertere en buffer til et JSON-objekt. For at undersøge størrelsen på en buffer kan vi bruge lengthmetoden.

emptyBuf.length; // Output: 10

Lad os nu konvertere buffer til en læsbar streng, i vores tilfælde den utf-8 kodede.

console.log(bufferOne.toString('utf8')); // Output: This is a buffer example.

.toString()konverterer som standard en buffer til en streng i utf-8-format. Sådan afkoder du en buffer. Hvis du angiver en kodning, kan du konvertere bufferen til en anden kodning

console.log(bufferOne.toString('base64'));

Mere info om buffere:

  • Brug for en bedre forståelse af buffere i Node.js? Se lige det her.