Node.js - Buffers: Panduan Pemula

Hai sana, para ahli Node.js masa depan! Saya sangat gembira menjadi pandu Anda dalam perjalanan yang menarik ke dunia Node.js Buffers. Sebagai seseorang yang telah mengajar pemrograman selama tahun tahun, saya bisa katakan bahwa Buffers adalah seperti pahlawan tak dikenal manipulasi data di Node.js. Mereka mungkin terlihat sedikit mistis pada awalnya, tetapi pada akhir tutorial ini, Anda akan menggunakannya seperti seorang pro!

Node.js - Buffers

Apa Itu Buffers?

Sebelum kita masuk ke detil, mari kita mulai dari dasar. Bayangkan Anda mencoba memindahkan gunung pasir. Anda bisa mencoba memindahkannya butir demi butir, tapi itu akan memakan waktu yang lama! Sebaliknya, Anda akan menggunakan sebuah ember. Di dunia Node.js, Buffers seperti ember itu - mereka membantu kita menghandle dan memindahkan data biner secara efisien.

Buffers adalah chunk memori ukuran tetap, dialokasikan di luar mesin JavaScript V8. Mereka sangat berguna saat berurusan dengan hal-hal seperti operasi file, protokol jaringan, atau setiap konteks di mana Anda perlu bekerja dengan stream data biner.

Membuat Buffer

Mari kita mulai dengan membuat Buffer pertamamu:

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

Ketika Anda menjalankan kode ini, Anda akan melihat sesuatu seperti ini:

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

Apa yang terjadi? Kita membuat Buffer dengan ukuran 10 byte, dan semua byte diinisialisasi ke nol. Itu seperti kita baru saja mendapatkan ember baru, bersih dan kosong, siap untuk diisi dengan data pasir kita!

Sekarang, mari kita buat Buffer dengan beberapa konten awal:

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

Output:

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

Di sini, kita membuat Buffer dari string. Setiap angka yang Anda lihat mewakili kode ASCII untuk setiap karakter dalam string kita. Keren, kan?

Metode Statis

Node.js menyediakan beberapa metode statis untuk bekerja dengan Buffers. Mari kita jelajahi beberapa yang paling umum digunakan:

Buffer.alloc()

Kita telah melihat metode ini dalam aksi. Itu membuat Buffer baru dengan ukuran yang ditentukan, dengan semua byte diinisialisasi ke nol.

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

Buffer.from()

Metode ini membuat Buffer baru dari array, Buffer lain, atau string.

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

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

Buffer.concat()

Metode ini menggabungkan daftar Buffers.

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

Berikut adalah tabel yang menggabungkan metode ini:

Metode Deskripsi Contoh
Buffer.alloc() Membuat Buffer baru ukuran tertentu Buffer.alloc(10)
Buffer.from() Membuat Buffer dari array, Buffer, atau string Buffer.from('Hello')
Buffer.concat() Menggabungkan daftar Buffers Buffer.concat([buf1, buf2])

Referensi Metode

Sekarang kita telah membuat Buffers, mari kita lihat beberapa metode yang bisa kita gunakan untuk bekerja dengannya.

buf.toString()

Metode ini mendekode Buffer ke string sesuai dengan encoding karakter yang ditentukan.

const buf9 = Buffer.from('Hello, Buffer!');
console.log(buf9.toString()); // Hello, Buffer!
console.log(buf9.toString('hex')); // 48656c6c6f2c2042756666657221

buf.write()

Metode ini menulis string ke Buffer.

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

buf.slice()

Metode ini mengembalikan Buffer baru yang merujuk ke memori yang sama seperti asli, tetapi menggunakan indeks awal dan akhir yang Anda tentukan.

const buf11 = Buffer.from('Hello, Buffer!');
const slicedBuf = buf11.slice(0, 5);
console.log(slicedBuf.toString()); // Hello

Berikut adalah tabel yang menggabungkan metode ini:

Metode Deskripsi Contoh
buf.toString() Mendekode Buffer ke string buf.toString()
buf.write() Menulis string ke Buffer buf.write('Hello')
buf.slice() Mengembalikan Buffer baru yang merujuk ke memori yang sama buf.slice(0, 5)

Metode Kelas

Akhirnya, mari kita lihat beberapa metode kelas yang bisa sangat berguna saat bekerja dengan Buffers.

Buffer.isBuffer()

Metode ini memeriksa apakah objek itu Buffer.

const buf12 = Buffer.from('Hello');
console.log(Buffer.isBuffer(buf12)); // true
console.log(Buffer.isBuffer('Bukan buffer')); // false

Buffer.byteLength()

Metode ini mengembalikan jumlah byte dalam string atau Buffer.

console.log(Buffer.byteLength('Hello')); // 5
console.log(Buffer.byteLength('?')); // 4 (karena emoji ini adalah 4 byte)

Berikut adalah tabel yang menggabungkan metode ini:

Metode Deskripsi Contoh
Buffer.isBuffer() Memeriksa apakah objek adalah Buffer Buffer.isBuffer(obj)
Buffer.byteLength() Mengembalikan panjang byte string atau Buffer Buffer.byteLength('Hello')

Dan itu adalah, teman-teman! Kita telah menjelajahi negeri Node.js Buffers, dari membuatnya sampai memanipulasikan kontennya. Ingat, latihan membuat sempurna. Jadi jangan takut untuk mencoba metode ini dan lihat apa yang Anda bisa buat.

Dalam tahun-tahun mengajar saya, saya menemukan bahwa cara terbaik untuk benar-benar memahami Buffers adalah menggunakannya dalam proyek nyata. Cobalah membaca file ke Buffer, atau mengirimkan data Buffer melalui jaringan. Semakin banyak Anda menggunakannya, semakin natural mereka akan menjadi.

Sebelum saya menutup, ini adalah一个小小的 Buffer joke untuk Anda: Mengapa Buffer menyeberang jalan? Untuk mendapatkan byte lainnya! (Saya tahu, saya tahu, saya seharusnya menempel di coding...)

Happy coding, dan semoga Buffers Anda selalu penuh dengan tepat data yang Anda butuhkan!

Credits: Image by storyset