Пояснено буфер Node.js

Що таке буфери?

Бінарний файл - це просто набір або колекція 1та 0. Кожне число в двійковій системі, кожне 1 і 0 у наборі називаються бітами . Комп’ютер перетворює дані у цей двійковий формат для зберігання та виконання операцій. Наприклад, ось п'ять різних двійкових файлів:

10, 01, 001, 1110, 00101011

JavaScript не має даних базового типу в своєму базовому API. Для обробки двійкових даних Node.js включає реалізацію двійкового буфера із загальним модулем Buffer.

Створення буфера

Існують різні способи створення буфера в Node.js. Ви можете створити порожній буфер розміром 10 байт.

const buf1 = Buffer.alloc(10);

З рядків, закодованих UTF-8, створення виглядає так:

const buf2 = Buffer.from('Hello World!');

При створенні буфера існують різні прийняті кодування:

  • ascii
  • utf-8
  • base64:
  • латинська1
  • двійковий
  • шістнадцятковий

В API буфера виділено три окремі функції для використання та створення нових буферів. У наведених вище прикладах ми бачили alloc()і from(). Третім є allocUnsafe().

const buf3 = Buffer.allocUnsafe(10);

Після повернення ця функція може містити старі дані, які потрібно перезаписати.

Взаємодія з буфером

Існують різні взаємодії, які можна здійснити за допомогою API буфера. Більшість із них ми розглянемо тут. Почнемо з перетворення буфера в JSON.

let bufferOne = Buffer.from('This is a buffer example.'); console.log(bufferOne); // Output:  let json = JSON.stringify(bufferOne); console.log(json); // Output: {"type": "Buffer", "data": [84,104,105,115,32,105,115,32,97,32,98,117,102,102,101,114,32,101,120,97,109,112,108,101,46]}

JSON вказує, що тип об'єкта, що трансформується, - це буфер та його дані. Перетворення порожнього буфера в JSON покаже нам, що він не містить нічого, крім нулів.

const emptyBuf = Buffer.alloc(10); emptyBuf.toJSON(); // Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Зауважте, що Buffer API також забезпечує пряму функцію toJSON()перетворення буфера в об'єкт JSON. Щоб дослідити розмір буфера, ми можемо використовувати lengthметод.

emptyBuf.length; // Output: 10

Тепер перетворимо буфер на читабельну рядок, у нашому випадку кодовану utf-8.

console.log(bufferOne.toString('utf8')); // Output: This is a buffer example.

.toString()за замовчуванням перетворює буфер у рядок формату utf-8. Ось як ви декодуєте буфер. Якщо ви вказали кодування, ви можете перетворити буфер в інше кодування

console.log(bufferOne.toString('base64'));

Більше інформації про буфери:

  • Потрібно краще розуміти буфери в Node.js? Перевір це.