Node.js & TypeScript: Hiểu về Buffer

Giới thiệu
Trong bài viết này, chúng ta sẽ khám phá Buffer
trong Node.js — một khái niệm quan trọng khi làm việc với dữ liệu nhị phân như file, stream, hoặc socket.
Buffer là gì?
Trong Node.js, Buffer
dùng để xử lý dữ liệu nhị phân raw. Đây là đối tượng tương tự như mảng byte, hữu ích khi bạn làm việc với dữ liệu không phải chuỗi (string) hoặc không phải JavaScript object.
Ví dụ tạo một Buffer từ chuỗi:
const buffer = Buffer.from('Hello, world!', 'utf-8');
console.log(buffer);
// <Buffer 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21>
Chuyển đổi giữa Buffer và chuỗi
const buffer = Buffer.from('Xin chào!');
console.log(buffer.toString('utf-8')); // "Xin chào!"
Ghi dữ liệu vào Buffer
const buffer = Buffer.alloc(10);
buffer.write('ABC');
console.log(buffer.toString()); // "ABC"
Buffer.alloc(size)
tạo buffer với kích thước cố định, khởi tạo giá trị bằng 0Buffer.allocUnsafe(size)
nhanh hơn nhưng không khởi tạo
Truy cập dữ liệu trong Buffer
const buffer = Buffer.from('ABC');
console.log(buffer[0]); // 65 (mã ASCII của 'A')
Bạn có thể thay đổi từng byte như mảng:
buffer[0] = 66; // thay 'A' bằng 'B'
console.log(buffer.toString()); // "BBC"
Cắt và nối Buffer
const buffer = Buffer.from('Hello, Buffer!');
const slice = buffer.slice(7, 13);
console.log(slice.toString()); // "Buffer"
Ghép nhiều Buffer lại:
const part1 = Buffer.from('Hello, ');
const part2 = Buffer.from('world!');
const full = Buffer.concat([part1, part2]);
console.log(full.toString()); // "Hello, world!"
So sánh Buffer
const a = Buffer.from('ABC');
const b = Buffer.from('ABC');
console.log(a.equals(b)); // true
So sánh thứ tự:
const x = Buffer.from('A');
const y = Buffer.from('B');
console.log(x.compare(y)); // -1 vì A < B
Ứng dụng thực tế
Khi làm việc với hệ thống file, stream, hoặc network (như HTTP hoặc TCP), Node.js sử dụng Buffer
để truyền dữ liệu hiệu quả.
Ví dụ đọc file dưới dạng buffer:
import * as fs from 'fs';
fs.readFile('example.txt', (err, data) => {
if (err) throw err;
console.log(data); // Là Buffer
console.log(data.toString()); // Chuyển sang chuỗi
});
Kết luận
Buffer
là cách hiệu quả để xử lý dữ liệu nhị phân trong Node.js- Bạn có thể tạo, cắt, ghép, so sánh, và chuyển đổi buffer sang chuỗi hoặc ngược lại
- Rất quan trọng khi làm việc với file, stream và socket
Comments ()