web前端生成UUID的方法

1,845 阅读1分钟

什么是UUID

UUID(Universally Unique Identifier),通用唯一标识符,是一种软件建构的标准,亦为开放软件基金会组织的标准。

方案1: 使用crypto.randomUUID()方法

function getUuid() {
  return crypto.randomUUID();
}
  • 实现方式:调用crypto对象的randomUUID()方法生成一个符合UUID规范的唯一标识符。
  • 优点:简单易用,直接调用现有的API即可生成UUID。
  • 缺点:依赖浏览器支持crypto对象。

方案2: 使用crypto.getRandomValues()方法

function getUuid() {
  return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, (c) =>
    (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
  );
}
  • 实现方式:利用crypto对象的getRandomValues()方法生成一个符合UUID规范的唯一标识符。
  • 优点:生成的UUID更具有随机性。
  • 缺点:稍复杂,依赖浏览器支持crypto对象。

方案3: 使用Math.random()生成UUID

function UUID() {
  let str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
  return str.replace(/[xy]/g, (c) => {
    let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
    return v.toString(16);
  });
}
  • 实现方式:利用Math.random()方法生成一个基于随机数的简单UUID。
  • 优点:简单快速,不需要额外的依赖。
  • 缺点:生成的UUID可能不够唯一。

方案4: 使用URL.createObjectURL()方法

function UUID() {
  let str = URL.createObjectURL(new Blob());
  URL.revokeObjectURL(str);
  const arr = str.split('/')
  return arr[arr.length-1];
  // or
  // return arr.at(-1)
}
  • 实现方式:利用URL.createObjectURL()方法创建一个URL对象,再通过处理得到一个UUID。
  • 优点:不依赖crypto对象,比较特殊的一种生成方式。
  • 缺点:可能会受到浏览器环境的影响。

以上是前端生成UUID的几种方法,可以根据实际需求选择合适的方法进行使用。