Стендап Сьогодні
📢
Канал в Telegram @stendap_sogodni
🦣
@stendap_sogodni@shevtsov.me в Федиверсі
08.10.2023
Типи для представлення масивів даних в JavaScript
-
String- найбільш базовий тип; для тексту підійде, а для двійкових даних — ні. Технічно рядок може містити двійкові дані, але оскільки за стандартом рядки мають кодування UTF-16, то без особливої обробки вони будуть зіпсовані при перетвореннях. Та в будь-якому разі, це застарілий підхід, бо зараз є достатньо альтернатив. -
ArrayBuffer - справжній сучасний тип для збереження двійкових даних. Що важливо -
ArrayBufferможна передавати (transfer) зі сторінки до вебворкера та назад без копіювання. Сам по собіArrayBufferє “примітивним” типом, а працювати з ним зручно через “типізовані масиви”UInt8Arrayта інші, а також через цікавий клас DataView, яким можна читати з масиву довільні дані. -
Buffer (той, що в Node.js) - в браузері можна замінити пакетом buffer - використовує всередині той самий
ArrayBuffer. Так що пакети для Node.js, яким потрібний Buffer, теж можна підключати без зайвих витрат. -
Blob дуже схожий на
ArrayBuffer, але за природою зовсім інша істота. ЯкщоArrayBuffer- це масив даних в памʼяті, то Blob - це абстракція масиву даних, який може знаходитись будь-де. На практиці це “будь-де” значить або в памʼяті поточного процесу, або в спільній памʼяті браузера, або на диску. (КласFileє нащадкомBlob, до речі.) Через цеBlobне можна змінювати, а читати дозволено тільки асинхронно. Зате можемо створювати на них посилання та в деяких випадках заощаджувати ресурси (якщо не створювати його власноруч). Втім, для роботи з невеликими даними безпосередньо в браузері від Blob немає користі. -
Як
ArrayBuffer, так іBlobможна вказувати як тіло запита HTTP, або навпаки, як тип результату. Тут треба дивитись — якщо будемо працювати з даними, кращеArrayBuffer, якщо просто передавати далі — кращеBlob.

