Обяснен буфер на Node.js

Какво представляват буферите?

Binary е просто набор или колекция от 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? Виж това.