Comment générer un GUID/UUID ?
P粉304704653
P粉304704653 2023-10-08 14:55:18
0
2
592

Comment créer un GUID (Globally Unique Identifier) ​​​​en JavaScript ? Les GUID/UUID doivent comporter au moins 32 caractères et doivent rester dans la plage ASCII pour éviter des problèmes de transmission.

Je ne sais pas quelles routines sont disponibles sur tous les navigateurs, quel est le "caractère aléatoire" du générateur de nombres aléatoires intégré, comment il est généré, etc.

P粉304704653
P粉304704653

répondre à tous(2)
P粉352408038

[Modifié le 5 mars 2023 pour refléter les dernières bonnes pratiques en matière de génération d'UUID conformes à la RFC4122]

crypto.randomUUID() is now standard on all modern browsers and JS runtimes. However, because new browser APIs are restricted to secure contexts, this method is only available to pages served locally (localhost or 127.0.0.1) ou via HTTPS.

Pour les lecteurs intéressés par d'autres versions d'UUID, générant des UUID sur des plateformes existantes ou dans des contextes non sécurisés, il existe le uuid module Il est bien testé et pris en charge.

.

Si la méthode ci-dessus échoue, il existe également cette méthode (basée sur la réponse originale à cette question) :

function uuidv4() {
  return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
    (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
  );
}

console.log(uuidv4());

Remarque : L'utilisation de n'importe quel générateur d'UUID qui s'appuie sur Math.random() est fortement déconseillée (y compris les extraits présentés dans les versions précédentes de cette réponse) pour raisons mieux expliquées iciMath.random() is strongly discouraged (including snippets featured in previous versions of this answer) for reasons best explained here. TL;DR: solutions based on Math.random()TL;DR:

les solutions basées sur Math.random() ne le sont pas. fournir de bonnes garanties d'unicité.🎜
P粉190443691

UUID (Universally Unique Identifier), également connu sous le nom de GUID (Globally Unique Identifier), selon RFC 4122 est un identifiant conçu pour fournir certaines garanties d'unicité.

Bien qu'il soit possible d'implémenter un UUID conforme à la RFC avec quelques lignes de JavaScript (voir, par exemple, la réponse de @broofa ci-dessous), il existe plusieurs pièges courants :

  • Format d'identifiant non valide (les UUID doivent être de la forme "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx", où x est l'un des [0-9, a-f] M est l'un des [1-5] et N est [8, 9, a , ou b]
  • Utilisation d'une source aléatoire de mauvaise qualité (telle que Math.random)

Ainsi, les développeurs écrivant du code pour les environnements de production sont encouragés à utiliser des implémentations strictes et bien entretenues telles que le module uuid.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal