Использование JavaScript для создания и генерации UUID

Использование JavaScript для создания и генерации UUID

16 ноября 2022 г.

Универсальные уникальные идентификаторы (UUID) используются повсеместно в разработке программного обеспечения для всего, от идентификации элементов объекта до элементов DOM на веб-странице. Это уникальные 128-битные идентификаторы, состоящие из 36 символов в формате 8-4-4-4-12, например, f81e7af3-fcf4-4cdd-b3a3-14a8087aa191.

UUID обычно не полагаются на реестр или базу данных для обеспечения уникальности. Вероятность того, что UUID является дубликатом, не равна нулю, но она настолько близка, что большинство игнорирует риск.

В Javascript существует множество способов создания UUID. Имея это в виду, давайте посмотрим, как вы можете создавать UUID с помощью Javascript.

Вариант 1: используйте метод crypto.randomUUID()

crypto.randomUUID — это относительно новый и надежный способ создания UUID с помощью собственного Javascript. Он поддерживается во всех современных, вечнозеленых браузерах и может генерировать UUID с помощью одной строки кода. Метод crypto доступен в глобальном объекте this в браузерах, также известном как window. Он также доступен на Node.JS.

Теперь вы можете генерировать такие UUID в браузере:

console.log(this.crypto.randomUUID()); // f81e7af3-fcf4-4cdd-b3a3-14a8087aa191

Или в Node.JS версии 19.0 вот так:

import crypto from 'crypto'

console.log(crypto.randomUUID()); // f81e7af3-fcf4-4cdd-b3a3-14a8087aa191

Вариант 2: используйте пакет UUID

В NPM есть очень популярный пакет под названием uuid, который выполняет за вас всю рутинную работу и генерирует надежные UUID. Его можно использовать в проекте Node.JS, сначала установив его, а затем запустив в своем коде.

Сначала используйте npm для установки:

npm i uuid

Затем вам просто нужно импортировать и использовать его в своем коде следующим образом:

import { v4 as uuid } from 'uuid';

let myUUID = uuid(); // Returns a random UUID xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Пакет uuid — это надежный метод создания UUID в Node.JS.

Вариант 3: используйте метод crypto.getRandomValues()

Можно сгенерировать собственную функцию uuid с помощью crypto.getRandomValues(). Это полезно в ситуациях, когда вы имеете дело с версиями Node.JS до 19.0 или должны поддерживать старые браузеры. crypto.getRandomValues() поддерживается еще в Chrome 11.

function uuid() {
    return ('10000000-1000-4000-8000-100000000000').replace(/[018]/g, c => (
        c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
    );
}

Эта функция основана на здесь и генерирует надежные UUID, если для этого вам нужна собственная функция.

Вариант 4: Math.random() (не рекомендуется)

Последним и самым грязным решением является использование Math.random(), однако, как правило, это не очень хорошая идея, поскольку Math.random() не выполняет достаточно хорошую работу по созданию UUID для обеспечения уникальности. Вам также не нужно это, так как теперь у нас есть широко доступный метод crypto.randomUUID().

Если вам нужен настоящий UUID, лучше избегать этого решения, но оно может обеспечить быстрое исправление в проекте, где вам нужен быстрый UUID для тестирования.

Это может быть приемлемо в качестве запасного варианта, когда у вас нет поддержки randomUUID() или доступного пакета uuid:

function uuid() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
    return v.toString(16);
  });
}

Заключение

Это касается всех способов создания UUID в Javascript. Надеюсь, вам понравилось это руководство. узнайте больше о Javascript здесь.


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE