Maison  >  Questions et réponses  >  le corps du texte

Comment générer un GUID/UUID ?

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粉304704653P粉304704653350 Il y a quelques jours505

répondre à tous(2)je répondrai

  • P粉352408038

    P粉3524080382023-10-09 14:12:19

    [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é.🎜

    répondre
    0
  • P粉190443691

    P粉1904436912023-10-09 13:09:03

    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< /a>.

    répondre
    0
  • Annulerrépondre