Вам больше не нужен 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.
Если вы нашли эту статью полезной, пожалуйста, ставьте аплодисменты или комментарии, чтобы побудить меня продолжать писать. Я также приветствую любые ваши отзывы. Спасибо, и до встречи в следующей статье!