PassFront
  1. PassFront
  2. База знаний
  3. Потоки и буферы

Что такое 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, различать байты и символы и аккуратно склеивать чанки.

Другие вопросы раздела