什么是 UUID?为什么要使用它?
UUID(通用唯一标识符)是一个 128 位标识符,格式为 36 个字符:550e8400-e29b-41d4-a716-446655440000。这些标识符也称为 GUID,几乎可以保证其唯一性,而无需中央机构或数据库协调。
对于前端和 Node.js 开发人员来说,UUID 解决了关键问题:
- 数据库记录:生成无自增冲突的主键
- 会话令牌:创建不可预测的、唯一的会话标识符
- 文件命名:防止上传内容出现命名冲突
- 请求跟踪:跟踪跨微服务的操作
要点总结
- 适用
crypto.randomUUID()于现代环境(Node.js 14.17+ 和最新版本的浏览器) - 实现
crypto.getRandomValues()对旧版浏览器的支持,并具备加密安全性 - 当您需要特定 UUID 版本或最大兼容性时,请选择
uuidnpm 包。 Math.random()由于缺乏加密安全性,切勿在生产环境中使用 UUID。
现代方法:crypto.randomUUID()
crypto.randomUUID() 方法是目前现代环境中生成唯一 ID 值的标准方法。它已内置于浏览器和 Node.js(14.17+)中,无需任何依赖项,并生成加密安全的 UUID v4 值。
浏览器实现
const uuid = crypto.randomUUID();
console.log(uuid);
// "3b99e3e0-7598-4bf8-b9c1-e915af91713c"
Node.js 实现
import { randomUUID } from 'crypto';
const uuid = randomUUID();
console.log(uuid);
// "b7e44f0a-811f-4c1c-b7f0-48d51f5dbc1f"
浏览器支持:Chrome 92+、Firefox 95+、Safari 15.4+、Edge 92+; Node.js 支持:版本 14.17.0+
crypto.randomUUID() 当您需要在现代应用程序中使用安全、随机的 UUID 而无需外部依赖项时,请使用此方法。
备用方法:crypto.getRandomValues()
对于不支持的环境 crypto.randomUUID(),您可以使用其他方法实现 UUID v4 生成 crypto.getRandomValues()。此方法适用于 Chrome 11 及更高版本的浏览器以及安装了 crypto 模块的 Node.js 版本。
function generateUUID() {
.(, () {
r = crypto.( ())[];
v = c === ? (r & ) : ((r & ) | );
v.();
});
}
uuid = ();
.(uuid);


