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!
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