Что такое Buffer в Node.js?
Потоки и буферы
Buffer — объект фиксированного размера для работы с сырыми бинарными данными. Он наследуется от Uint8Array.
Зачем нужен
JavaScript исторически работал со строками, а сеть и файлы передают байты. Buffer хранит эти байты и умеет конвертировать их в строки разных кодировок.
const buf = Buffer.from('Привет', 'utf8');
console.log(buf.length); // 12 байт: кириллица занимает по 2 байта
console.log(buf.toString('hex')); // шестнадцатеричное представление
console.log(buf.toString('base64'));
const empty = Buffer.alloc(8); // обнулённая память, безопасноВажные детали
Buffer.alloc(n)заполняет память нулями. Устаревшийnew Buffer(n)мог показать чужие данные из памяти, поэтому им не пользуются.- Длина строки в символах и в байтах различается.
- При склейке чанков потока с многобайтовыми символами нужен
StringDecoderилиsetEncoding, иначе символ может разорваться на границе чанков.
Коротко для собеседования
Buffer — массив байтов для файлов и сети. Выделять его через Buffer.alloc, различать байты и символы и аккуратно склеивать чанки.