Использование 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 здесь.
Также опубликовано здесь
Оригинал