INTEGRITY Документация

Buffer

Buffer API в Node.js один из самых широко используемых API Node.js для работы с двоичными данными. Каждый Buffer экземпляр расширяет стандартный Uint8Array класс, но добавляет ряд уникальных возможностей, таких как встроенное кодирование и декодирование base64 и hex, работа с порядком байтов и поиск подстрок с учётом кодировки.

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 расширяет Uint8Array. Поэтому его можно использовать в любом API Workers, который в настоящее время принимает Uint8Array, например для создания нового Response:

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

Вы также можете использовать Buffer API при работе с потоками:

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

Одно из ключевых отличий реализации в Workers Buffer и реализацией Node.js заключается в том, что некоторые методы создания Buffer в Node.js будут выделяться из глобального пула памяти в целях оптимизации производительности. Реализация Workers не использует пул памяти, и все Buffer экземпляры выделяются независимо друг от друга.

Кроме того, в Node.js можно выделить Buffer неинициализированной памятью с помощью Buffer.allocUnsafe() метод. Это не поддерживается в Workers, и Buffer экземпляры всегда инициализируются так, чтобы Buffer всегда заполняется нулевыми байтами (0x00) при выделении.

См. документация Node.js для Buffer, где это описано подробнее.