1. Введение
GUID (Globally Unique Identifier) или UUID (Universally Unique Identifier) – уникальные идентификаторы, которые применяются для идентификации ресурсов в программировании. JavaScript не предоставляет встроенных функций для генерации GUID/UUID, однако существует несколько способов создания их собственными средствами. В этой статье мы рассмотрим 9 различных методов.
2. Способ 1 – Math.random() и текущая дата
function generateGuid() {
const timestamp = new Date().getTime();
const randomString = Math.random().toString(36).substring(2);
return `${timestamp}-${randomString}`;
}
const guid = generateGuid();
console.log(guid);
Объяснение: В этом примере мы используем текущую метку времени в миллисекундах и генерируем случайную строку с помощью Math.random()
. Затем мы объединяем эти значения, разделяя их дефисом, чтобы создать уникальный идентификатор.
3. Способ 2 – uuid npm пакет
const { v4: uuidv4 } = require('uuid');
const guid = uuidv4();
console.log(guid);
Объяснение: В этом примере мы используем внешнюю библиотеку uuid
для создания GUID. Установите ее, используя npm install uuid
, и затем импортируйте функцию v4
. Вызов этой функции вернет новый GUID.
4. Способ 3 – crypto.getRandomValues()
function generateGuid() {
const crypto = window.crypto || window.msCrypto;
const array = new Uint32Array(4);
crypto.getRandomValues(array);
const guid = array.join('-');
return guid;
}
const guid = generateGuid();
console.log(guid);
Объяснение: В этом примере мы используем API crypto.getRandomValues()
для генерации случайных чисел. Мы создаем Uint32Array
с 4 элементами, заполняем его случайными значениями и объединяем элементы в строку, разделяя их дефисами.
5. Способ 4 – nanoid npm пакет
const { nanoid } = require('nanoid');
const guid = nanoid();
console.log(guid);
Объяснение: В этом примере мы используем библиотеку nanoid
для генерации уникального идентификатора. Установите ее с помощью npm install nanoid
и вызовите функцию nanoid()
, чтобы получить новый GUID.
6. Способ 5 – uuid-random npm пакет
const uuidRandom = require('uuid-random');
const guid = uuidRandom();
console.log(guid);
Объяснение: В этом примере мы используем библиотеку uuid-random
для генерации случайного UUID. Установите ее с помощью npm install uuid-random
и вызывайте функцию uuidRandom()
для получения уникального идентификатора.
7. Способ 6 – shortid npm пакет
const shortid = require('shortid');
const guid = shortid.generate();
console.log(guid);
Объяснение: В этом примере мы используем библиотеку shortid
для создания коротких уникальных идентификаторов. Установите ее с помощью npm install shortid
и вызывайте функцию generate()
для получения GUID.
8. Способ 7 – uniqid npm пакет
const uniqid = require('uniqid');
const guid = uniqid();
console.log(guid);
Объяснение: В этом примере мы используем библиотеку uniqid
для генерации уникальных идентификаторов. Установите ее с помощью npm install uniqid
и вызывайте функцию uniqid()
для получения нового GUID.
9. Способ 8 – node-uuid npm пакет
const uuid = require('node-uuid');
const guid = uuid.v1();
console.log(guid);
Объяснение: В этом примере мы используем библиотеку node-uuid
для генерации уникального идентификатора. Установите ее с помощью npm install node-uuid
и вызовите функцию v1()
, чтобы получить новый GUID.
10. Способ 9 – генерация с использованием дополнительных символов
function generateGuid() {
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let guid = '';
for (let i = 0; i < 32; i++) {
const randomIndex = Math.floor(Math.random() * charset.length);
guid += charset[randomIndex];
}
return guid;
}
const guid = generateGuid();
console.log(guid);
Объяснение: В этом примере мы генерируем GUID, используя набор символов, состоящий из букв латинского алфавита в верхнем и нижнем регистре, а также цифр. Мы выбираем случайный символ из набора и добавляем его к создаваемому GUID. Повторяем этот процесс 32 раза, чтобы получить 32-символьный идентификатор.
Заключение
В этой статье мы рассмотрели 9 различных способов создания GUID / UUID на JavaScript. Вы можете выбрать тот, который лучше соответствует вашим потребностям и использовать его в своих проектах. Обратите внимание, что некоторые методы требуют установки дополнительных библиотек с использованием npm.