Node.js - буфер против Unint8Array

В документации 1 модуля fs мы можем прочитать (для метода writeFile):

const data = new Uint8Array(Buffer.from('Hello Node.js'));

В той же документации 2 сказано:

Теперь, когда TypedArray доступен, класс Buffer реализует Uint8Array API более оптимизированным и подходящим для Node.js.

Так что, если класс Buffer реализует Unint8Array, не могли бы вы объяснить, почему нам нужно преобразовать Unint8Array из Buffer?

1 ответ

Uint8Array - это байтовый массив общего назначения, который доступен как в nodejs, так и в браузерах. Buffer - это подкласс Uint8Array, который доступен только в nodejs (по историческим причинам). оба в основном используются для манипулирования двоичными (байтовыми) данными.

Исторически, когда впервые появился nodejs, универсального Uint8Arrays не существовало, поэтому ему пришлось изобрести свой собственный тип "Buffer" для обработки двоичных данных. после того, как универсальные Uint8Arrays были представлены с es6, nodejs (после версии 4.0) решил перенести Buffer из отдельного типа данных -> подкласс Uint8Array (чтобы попытаться сделать его более совместимым с браузером с Uint8Array).

https://www.quora.com/What-is-the-relationship-between-a-Buffer-and-an-Uint8Array-in-Node-js

Другие вопросы по тегам