Вам больше не нужен UUID… ну, в некоторых случаях. Давайте обсудим это!
Существует несколько способов и популярных пакетов для создания уникальных идентификаторов, и одним из них является пакет uuid», который ежедневно скачивают миллионы раз. Он предлагает различные типы подходов к созданию идентификаторов, ранжированных по версиям:
- v1 — создает UUID версии 1 (отметка времени).
- v3 — создает UUID версии 3 (пространство имен с MD5).
- v4 — создает UUID версии 4 (случайный).
- v5 — создает UUID версии 5 (пространство имен с SHA-1).
По моему опыту, v4 — наиболее часто используемая версия UUID, когда вам просто нужно случайное значение. Раньше для генерации UUID в Node.js мне приходилось устанавливать этот внешний пакет и потенциально добавлять типизации, так как репозиторий написан на чистом JavaScript. Однако недавно я обнаружил интересное обновление в сборках Node.js. Несколько релизов назад был добавлен новый метод crypto.randomUUID
, который сейчас используется в реализации самого пакета «uuid. Ниже дайджест из репозитория:
// https://github.com/uuidjs/uuid/blob/main/src/native.js import crypto from 'crypto'; export default { randomUUID: crypto.randomUUID }; // https://github.com/uuidjs/uuid/blob/main/src/v4.js import native from './native.js'; import rng from './rng.js'; import { unsafeStringify } from './stringify.js'; function v4(options, buf, offset) { if (native.randomUUID && !buf && !options) { return native.randomUUID(); } options = options || {}; const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` rnds[6] = (rnds[6] & 0x0f) | 0x40; rnds[8] = (rnds[8] & 0x3f) | 0x80; // Copy bytes to buffer, if provided if (buf) { offset = offset || 0; for (let i = 0; i < 16; ++i) { buf[offset + i] = rnds[i]; } return buf; } return unsafeStringify(rnds); } export default v4;
Таким образом, если ваш код работает на стороне сервера, а ваш дистрибутив Node.js имеет версию 15.6.0 или выше, вам может больше не понадобиться эта дополнительная зависимость, и вы можете просто использовать скрытый драгоценный камень из модуля crypto
.
Если вы нашли эту статью полезной, пожалуйста, ставьте аплодисменты или комментарии, чтобы побудить меня продолжать писать. Я также приветствую любые ваши отзывы. Спасибо, и до встречи в следующей статье!