INTEGRITY Dokumentace

Buffer

Buffer API v Node.js patří mezi nejčastěji používaná rozhraní API pro práci s binárními daty. Každý Buffer instance rozšiřuje standardní Uint8Array třídu, ale přidává řadu unikátních možností, jako je vestavěné kódování a dekódování base64 a hex, manipulace s pořadím bajtů a vyhledávání podřetězců s ohledem na kódování.

import { Buffer } from "node:buffer";

const buf = Buffer.from("hello world", "utf8");

console.log(buf.toString("hex"));
// Prints: 68656c6c6f20776f726c64
console.log(buf.toString("base64"));
// Prints: aGVsbG8gd29ybGQ=

Buffer dědí z Uint8Array. Lze jej proto použít v jakémkoli Workers API, které aktuálně přijímá Uint8Array, jako je vytvoření nové Response:

const response = new Response(Buffer.from("hello world"));

Můžete také použít Buffer API při práci se streamy:

const writable = getWritableStreamSomehow();
const writer = writable.getWriter();
writer.write(Buffer.from("hello world"));

Jeden klíčový rozdíl mezi implementací Buffer a implementací Node.js je to, že některé metody vytváření Buffer v Node.js se tato paměť alokuje z globálního poolu paměti jako optimalizace výkonu. Implementace Workers pool paměti nepoužívá a všechny Buffer instance jsou alokovány nezávisle na sobě.

V Node.js je navíc možné alokovat Buffer neinicializovanou pamětí pomocí Buffer.allocUnsafe() metoda. To není ve Workers podporováno a Buffer instance jsou vždy inicializovány tak, aby Buffer je vždy vyplněn nulovými bajty (0x00) při alokaci.

Viz Dokumentace Node.js pro Buffer s dalšími informacemi.