Node.js - Puffer: Ein Anfängerguide

Hallo da drüben, zukünftige Node.js-Zauberer! Ich freue mich sehr, Ihr Guide auf dieser aufregenden Reise in die Welt der Node.js Puffer zu sein. Als jemand, der seit Jahren Programmieren unterrichtet, kann ich Ihnen sagen, dass Puffer die unbesungenen Helden der Datenmanipulation in Node.js sind. Sie mögen zunächst ein bisschen geheimnisvoll erscheinen, aber bis zum Ende dieses Tutorials werden Sie sie wie ein Profi einsetzen können!

Node.js - Buffers

Was sind Puffer?

Bevor wir uns den Details widmen, beginnen wir mit den Grundlagen. Stellen Sie sich vor, Sie versuchen einen Berg von Sand zu bewegen. Sie könnten versuchen, ihn Korn für Korn zu bewegen, aber das würde ewig dauern! Stattdessen würden Sie einen Eimer verwenden. In der Welt von Node.js sind Puffer wie diese Eimer – sie helfen uns, binäre Daten effizient zu handhaben und zu bewegen.

Puffer sind festgrößige Speicherblöcke, die außerhalb der V8 JavaScript Engine alloziert werden. Sie sind besonders nützlich bei Dinge wie Dateioperationen, Netzwerkprotokollen oder jeder Situation, in der Sie mit Datenströmen arbeiten müssen.

Erstellen eines Puffers

Lassen Sie uns mit der Erstellung unseres ersten Puffers beginnen:

const buf1 = Buffer.alloc(10);
console.log(buf1);

Wenn Sie diesen Code ausführen, werden Sie etwas wie dies sehen:

<Buffer 00 00 00 00 00 00 00 00 00 00>

Was ist da passiert? Wir haben einen Puffer mit einer Größe von 10 Bytes erstellt, und alle Bytes wurden auf Null initialisiert. Es ist, als hätten wir gerade einen neuen Eimer bekommen, sauber und leer, bereit, mit unseren Datenkörnern gefüllt zu werden!

Nun erstellen wir einen Puffer mit einigen初始内容:

const buf2 = Buffer.from('Hallo, Node.js!');
console.log(buf2);

Ausgabe:

<Buffer 48 61 6c 6c 6f 2c 20 4e 6f 64 65 2e 6a 73 21>

Hier haben wir einen Puffer aus einer Zeichenkette erstellt. Jede Zahl, die Sie sehen, represents den ASCII-Code für jedes Zeichen in unserer Zeichenkette. Cool, oder?

Statische Methoden

Node.js bietet mehrere statische Methoden zum Arbeiten mit Puffern. Lassen Sie uns einige der am häufigsten verwendeten Methoden erkunden:

Buffer.alloc()

Wir haben diese Methode bereits in Aktion gesehen. Sie erstellt einen neuen Puffer einer angegebenen Größe, wobei alle Bytes auf Null initialisiert werden.

const buf3 = Buffer.alloc(5);
console.log(buf3); // <Buffer 00 00 00 00 00>

Buffer.from()

Diese Methode erstellt einen neuen Puffer aus einem Array, einem anderen Puffer oder einer Zeichenkette.

const buf4 = Buffer.from([1, 2, 3, 4, 5]);
console.log(buf4); // <Buffer 01 02 03 04 05>

const buf5 = Buffer.from('Hallo');
console.log(buf5); // <Buffer 48 61 6c 6c 6f>

Buffer.concat()

Diese Methode verbindet eine Liste von Puffern.

const buf6 = Buffer.from('Hallo');
const buf7 = Buffer.from(' Welt');
const buf8 = Buffer.concat([buf6, buf7]);
console.log(buf8.toString()); // Hallo Welt

Hier ist eine Tabelle, die diese statischen Methoden zusammenfasst:

Methode Beschreibung Beispiel
Buffer.alloc() Erstellt einen neuen Puffer einer angegebenen Größe Buffer.alloc(10)
Buffer.from() Erstellt einen Puffer aus Array, Puffer oder Zeichenkette Buffer.from('Hallo')
Buffer.concat() Verbindet eine Liste von Puffern Buffer.concat([buf1, buf2])

Methodenreferenz

Nun, da wir unsere Puffer erstellt haben, schauen wir uns einige Methoden an, mit denen wir arbeiten können.

buf.toString()

Diese Methode dekodiert einen Puffer in eine Zeichenkette gemäß der angegebenen Zeichencodierung.

const buf9 = Buffer.from('Hallo, Puffer!');
console.log(buf9.toString()); // Hallo, Puffer!
console.log(buf9.toString('hex')); // 48656c6c6f2c2050756666657221

buf.write()

Diese Methode schreibt eine Zeichenkette in den Puffer.

const buf10 = Buffer.alloc(20);
buf10.write('Hallo');
console.log(buf10.toString()); // Hallo

buf.slice()

Diese Methode gibt einen neuen Puffer zurück, der auf den gleichen Speicher wie das Original verweist, aber die von Ihnen angegebenen Start- und Endindizes verwendet.

const buf11 = Buffer.from('Hallo, Puffer!');
const geschnittenerPuffer = buf11.slice(0, 5);
console.log(geschnittenerPuffer.toString()); // Hallo

Hier ist eine Tabelle, die diese Methoden zusammenfasst:

Methode Beschreibung Beispiel
buf.toString() Dekodiert Puffer in Zeichenkette buf.toString()
buf.write() Schreibt Zeichenkette in Puffer buf.write('Hallo')
buf.slice() Gibt neuen Puffer zurück, der auf gleichen Speicher verweist buf.slice(0, 5)

Klassenmethoden

Zuletzt schauen wir uns einige Klassenmethoden an, die besonders nützlich sein können, wenn Sie mit Puffern arbeiten.

Buffer.isBuffer()

Diese Methode überprüft, ob ein Objekt ein Puffer ist.

const buf12 = Buffer.from('Hallo');
console.log(Buffer.isBuffer(buf12)); // true
console.log(Buffer.isBuffer('Kein Puffer')); // false

Buffer.byteLength()

Diese Methode gibt die Anzahl der Bytes in einer Zeichenkette oder einem Puffer zurück.

console.log(Buffer.byteLength('Hallo')); // 5
console.log(Buffer.byteLength('?')); // 4 (denn dieses Emoji ist 4 Bytes groß)

Hier ist eine Tabelle, die diese Klassenmethoden zusammenfasst:

Methode Beschreibung Beispiel
Buffer.isBuffer() Überprüft, ob Objekt ein Puffer ist Buffer.isBuffer(obj)
Buffer.byteLength() Gibt Byte-Länge von Zeichenkette oder Puffer zurück Buffer.byteLength('Hallo')

Und da haben Sie es, Leute! Wir haben die Welt der Node.js Puffer durchquert, von der Erstellung bis hin zur Manipulation ihrer Inhalte. Denken Sie daran, Übung macht den Meister. Also fürchten Sie sich nicht, diese Methoden auszuprobieren und zu sehen, was Sie erschaffen können.

In meinen Jahren des Unterrichtens habe ich festgestellt, dass der beste Weg, Puffer wirklich zu verstehen, ist, sie in realen Projekten zu verwenden. Versuchen Sie, eine Datei in einen Puffer zu lesen oder Buffer-Daten über ein Netzwerk zu senden. Je öfter Sie sie verwenden, desto natürlicher werden sie für Sie.

Bevor ich gehe, hier ist ein kleiner Puffer-Witz für Sie: Warum ist der Puffer über die Straße gegangen? Um zum anderen Byte zu gelangen! (Ich weiß, ich weiß, ich sollte bei der Programmierung bleiben...)

Frohes Coden und mögen Ihre Puffer immer mit genau den Daten gefüllt sein, die Sie benötigen!

Credits: Image by storyset