← Cloudflare Workers / workers / runtime-apis / nodejs
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 ↗, где это описано подробнее.