Гид по технологиям

Генерация UUID в Node.js: crypto, uuid и Nano ID

4 min read Node.js Обновлено 04 Jan 2026
Генерация UUID в Node.js — crypto, uuid, Nano ID
Генерация UUID в Node.js — crypto, uuid, Nano ID

Случайные числа на коричневой деревянной рамке

Кратко: что такое UUID

UUID (универсально уникальный идентификатор) — это 128‑битная строка, используемая для маркировки и доступа к данным. Генерация UUID практически исключает коллизии, поэтому их можно создавать локально без централизованной проверки.

Ключевой термин:

  • UUID — 128 бит, обычно представляется как текст в формате из 36 символов (с дефисами).

Использование модуля crypto

Встроенный в Node.js модуль crypto предоставляет метод randomUUID() для генерации UUID.

const crypto = require("crypto")  
const uuid = crypto.randomUUID()  

Чтобы отключить использование кеша энтропии при генерации, передайте опцию disableEntropyCache:

const uuid = crypto.randomUUID({ disableEntropyCache: true })  

Важно: crypto.randomUUID() возвращает строку в стандартизованном формате UUID (v4‑совместимом представлении). Это простой и безопасный вариант без внешних зависимостей.

Использование пакета uuid

Пакет uuid — сторонняя npm‑библиотека, которая поддерживает несколько версий UUID:

npm install uuid  
  • Версии 1 и 4: генерация уникальных ID, при этом v4 чаще всего — случайная.
  • Версии 3 и 5: детерминированные ID, получаемые из пространства имён и имени (namespace + name).

Пример генерации UUID версии 4:

const {v4 : uuidv4} = require("uuid")  
const id = uuidv4()  

Пакет uuid полезен, если вам нужна явная поддержка разных версий UUID или совместимость с существующими системами.

Использование Nano ID

Nano ID — альтернативный npm‑пакет для генерации коротких уникальных строк. По умолчанию nanoid выдаёт короткие идентификаторы (часто 21 символ по умолчанию), тогда как стандартный текстовый UUID обычно занимает 36 символов с дефисами.

const { nanoid } = require("nanoid")  
const id = nanoid()  

Короткая сводка отличий:

  • Формат: UUID (текстовый) ≈ 36 символов; Nano ID по умолчанию ≈ 21 символ.
  • Размер сборки и производительность: Nano ID обычно компактнее и быстрее, но точные показатели зависят от версии и конфигурации.
  • Назначение: Nano ID удобно использовать в клиентских приложениях и URL‑дружелюбных идентификаторах.

Сравнение: когда что выбирать

Цельcrypto.randomUUID()uuid (npm)Nano ID (nanoid)
Простая генерация стандартного UUIDОтличноХорошоНе рекомендуется (разный формат)
Нужна поддержка версий UUIDНетОтличноНет
Компактные идентификаторы для URLНетНетОтлично
Минимальные внешние зависимостиОтличноНужна зависимостьНужна зависимость
Клиентская/Frontend‑оптимизацияОграниченноОграниченноОтлично

Факты — ключевые числа

  • Размер UUID: 128 бит.
  • Текстовое представление UUID (обычно): около 36 символов с дефисами.
  • Стандартный Nano ID по умолчанию: около 21 символа.

(Цифры отражают типичные представления; точная длина и энтропия зависят от конкретных настроек.)

Модель принятия решения (короткая)

  • Нужен стандартный UUID / совместимость → используйте crypto.randomUUID() или uuid.
  • Нужен детерминированный ID на основе пространства имён → используйте uuid v3/v5.
  • Нужен короткий URL‑дружественный ID и высокая производительность → используйте Nano ID.
flowchart TD
  A[Нужен ID?] --> B{Требуется совместимость с UUID?}
  B -- Да --> C{Нужны разные версии 'v1/v3/v4/v5'?}
  C -- Да --> D[Использовать uuid 'npm']
  C -- Нет --> E[Использовать crypto.randomUUID'']
  B -- Нет --> F{Требуется короткий ID для URL?}
  F -- Да --> G[Использовать Nano ID]
  F -- Нет --> H[Выбрать по предпочтению безопасности/зависимостей]

Короткое руководство (SOP) для команды

  1. Оцените требования: совместимость UUID, длина ID, клиент/сервер, производительность.
  2. Если нужна совместимость со стандартом — предпочтите crypto или uuid.
  3. Для новых проектов, ориентированных на клиент и компактность — рассмотрите Nano ID.
  4. Тестируйте генерацию и убедитесь, что формат идентификатора соответствует ожиданиям (например, при взаимодействии с чужими API).
  5. Документируйте выбранный метод и причину выбора в репозитории.

Риски и рекомендации по безопасности

  • Убедитесь, что генерация использует криптографически надёжный источник случайных чисел (crypto — безопасен по умолчанию).
  • Не используйте сжимающуюся или предсказуемую схему генерации для чувствительных ключей.
  • Если идентификатор участвует в URL, избегайте утечек контекста и учтите длину.

Критерии приёмки

  • Генерация уникального идентификатора для запроса/объекта выполняется без ошибок.
  • Формат идентификатора соответствует ожидаемому (36‑символьный UUID или короткий Nano ID).
  • Необходимые зависимости установлены и задокументированы.
  • Автотесты проверяют уникальность на выборке и корректность формата.

Чеклист по ролям

  • Разработчик: выбрать метод, написать обёртку для генерации, добавить тесты.
  • Девопс: обеспечить поддержку версии Node и CI для сборки.
  • Архитектор: определить, где нужен UUID vs короткий ID, задокументировать.

Краткое резюме

crypto.randomUUID(), uuid и Nano ID решают схожую задачу, но с разными компромиссами. crypto — быстро и без зависимостей, uuid — для строгой поддержки версий и совместимости, Nano ID — для компактных и быстрых идентификаторов. Выбирайте исходя из требований формата, совместимости и производительности.

Важно: перед заменой формата идентификаторов в существующей системе оцените совместимость API и влияние на хранение данных.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство