← Cloudflare Workers / workers / runtime-apis / nodejs
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.