Leitfaden zur Generierung von GUID/UUID in JavaScript: Von der Theorie zum Code

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Sie GUID/UUID brauchen und warum es einfacher ist, als Sie denken?

\n\n

Haben Sie sich jemals gefragt, wie Websites und Anwendungen einen Datensatz in der Datenbank von einem anderen unterscheiden? Oder wie Ihr Browser sich merkt, dass genau Sie etwas in den Warenkorb gelegt haben und nicht der Nachbar? Das Geheimnis liegt oft in einer kleinen, aber mächtigen Zeichenkette – der GUID (Globally Unique Identifier) oder ihrem präziseren Bruder UUID (Universally Unique Identifier).

\n\n

Auf Stack Overflow sammelt die Frage „How do I create a GUID / UUID?“ tausende Aufrufe. Das ist kein Zufall. Früher oder später steht jeder Entwickler vor der Aufgabe: „Ich brauche eine eindeutige ID, aber ich möchte keine ganze Bibliothek nachziehen.“ Heute werden wir dieses Thema in JavaScript von A bis Z durchgehen. Sie erfahren nicht nur, wie man eine UUID generiert, sondern auch, welche Methode Sie für Ihre Aufgabe wählen sollten.

\n\n

Bereit? Los geht‘s!

\n\n

Was ist eine UUID eigentlich? (und warum das keine Magie ist)

\n\n

Bevor wir Code schreiben, klären wir die Theorie. Eine UUID ist eine 128-Bit-Zahl, die üblicherweise im hexadezimalen Format mit Bindestrichen dargestellt wird. Sie sieht so aus:

\n\n
123e4567-e89b-12d3-a456-426614174000
\n\n

Der Standard RFC 4122 beschreibt mehrere Versionen von UUIDs. Die beliebtesten sind:

\n
    \n
  • Version 4: Zufällige UUID. Fast alles, was Sie im Internet finden, ist diese.
  • \n
  • Version 1: Basiert auf Zeit und MAC-Adresse. Veraltet, kommt aber gelegentlich vor.
  • \n
  • Version 5: Wird aus einem Namen (z. B. einer URL) mit dem SHA-1-Hash generiert.
  • \n
\n\n

Die Haupteigenschaft einer UUID ist die Eindeutigkeit ohne zentralen Server. Die Wahrscheinlichkeit einer Kollision (Übereinstimmung zweier IDs) ist so gering, dass man sie vernachlässigen kann. Es heißt, wenn man eine Milliarde UUIDs pro Sekunde generieren würde, würde es etwa 100 Jahre dauern, ein Duplikat zu erzeugen. Eine ziemlich gute Garantie, oder?

\n\n

Der korrekteste Weg: crypto.randomUUID()

\n\n

Wenn Sie modernes JavaScript (ES2020+) schreiben, haben Sie eine integrierte Lösung zur Hand – crypto.randomUUID(). Diese Methode ist in Browsern und Node.js (ab Version 14.17.0) verfügbar.

\n\n

So funktioniert es:

\n\n
// Browser\nconst myUUID = crypto.randomUUID();\nconsole.log(myUUID); // Ausgabe: "f47ac10b-58cc-4372-a567-0e02b2c3d479"
\n\n
// Node.js (moderne Versionen)\nconst { randomUUID } = require('crypto');\nconst myUUID = randomUUID();\nconsole.log(myUUID);
\n\n

Warum ist das die beste Wahl?

\n
    \n
  • Sicherheit: Verwendet einen kryptografisch sicheren Zufallszahlengenerator. Keine vorhersagbaren Muster.
  • \n
  • Standard: Entspricht strikt RFC 4122 Version 4.
  • \n
  • Leistung: In C++ unter der Haube geschrieben, arbeitet blitzschnell.
  • \n
  • Null Abhängigkeiten: Keine Notwendigkeit, externe Bibliotheken zu installieren.
  • \n
\n\n

Wichtig: In älteren Browsern (Internet Explorer, Safari vor 15.4) fehlt diese Methode möglicherweise. Wenn Sie solche „Dinosaurier“ unterstützen, lesen Sie weiter – wir haben Alternativen.

\n\n

Der klassische Hack: Math.random() + RFC 4122-Muster

\n\n

Vor dem Erscheinen von crypto.randomUUID() haben Entwickler eigene Lösungen erfunden. Die beliebteste Variante ist die Verwendung von Math.random(), um Ziffern in das UUID-Muster einzusetzen. Dieser Code geistert seit über 10 Jahren durch das Internet:

\n\n
function generateUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n        const r = Math.random() * 16 | 0;\n        const v = c === 'x' ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n}\n\nconsole.log(generateUUID()); // Ausgabe: "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
\n\n

Wie funktioniert das?

\n
    \n
  1. Das Muster xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx gibt das Format vor.
  2. \n
  3. Das Zeichen 'x'

Blogs

Buchempfehlungen