Buffer là class built-in xử lý binary data — vùng nhớ raw bytes nằm ngoài V8 heap.
- JavaScript thuần không có kiểu dữ liệu binary, Buffer lấp đầy khoảng trống này cho Node.js.
- Cần dùng khi: đọc file binary (ảnh, PDF, executable), xử lý network packets TCP/UDP, mã hóa/giải mã base64 (
Buffer.from('hello').toString('base64')), tính hash vớicrypto.createHash.
Ví dụ thực tế: upload ảnh qua API, req.body là Buffer chứa raw bytes của file, cần convert hoặc pipe trực tiếp lên S3.
Pitfall: Buffer.allocUnsafe(size) nhanh hơn nhưng chứa dữ liệu cũ trong bộ nhớ — chỉ dùng khi sẽ ghi đè toàn bộ ngay sau đó, dùng Buffer.alloc(size) (zero-filled) cho trường hợp thông thường.