如何使用JavaScript生成指定前缀的UUID v4

来源:AI视频音频作者:小白龙头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何使用JavaScript生成指定前缀的UUID v4》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用JavaScript生成指定前缀的UUID v4》有用,将其分享出去将是对创作者最好的鼓励。

在前后端开发中,经常需要生成全局唯一的标识符。UUID v4依靠随机数保证唯一性,如果我们还想在生成的ID前面加上业务前缀,用原生JavaScript就能轻松实现。

如何使用JavaScript生成指定前缀的UUID v4

为什么使用UUID v4

UUID v4由128位组成,其中约122位来自随机数。根据数学估算,日常系统中碰撞的可能性极小。相比自增ID,它不暴露数据量,也适合分布式环境。

标准UUID v4格式

标准写法为8-4-4-4-12的十六进制分段,例如:

550e8400-e29b-41d4-a716-446655440000

第13位固定为4表示版本,第17位为8、9、a或b表示变体。

生成带前缀的实现代码

下面函数在随机UUID前拼接用户指定的前缀,使用crypto.getRandomValues保证随机性:

// 生成带指定前缀的UUID v4
function prefixedUUID(prefix) {
  // 获取16字节随机值
  var bytes = new Uint8Array(16);
  crypto.getRandomValues(bytes);
  // 设置版本和变体
  bytes[6] = (bytes[6] & 0x0f) | 0x40;
  bytes[8] = (bytes[8] & 0x3f) | 0x80;
  var hex = [];
  for (var i = 0; i < bytes.length; i++) {
    hex.push((bytes[i] & 0xff).toString(16).padStart(2, '0'));
  }
  var uuid = hex.slice(0, 4).join('') + '-' +
             hex.slice(4, 6).join('') + '-' +
             hex.slice(6, 8).join('') + '-' +
             hex.slice(8, 10).join('') + '-' +
             hex.slice(10, 16).join('');
  // 前缀非空时添加连字符
  return (prefix ? prefix + '_' : '') + uuid;
}

// 使用示例
console.log(prefixedUUID('order'));
console.log(prefixedUUID('user_123'));

在Node.js中的注意点

Node环境没有全局crypto,需要先从crypto模块引入:

const { randomFillSync } = require('crypto');
function nodePrefixedUUID(prefix) {
  const bytes = new Uint8Array(16);
  randomFillSync(bytes);
  bytes[6] = (bytes[6] & 0x0f) | 0x40;
  bytes[8] = (bytes[8] & 0x3f) | 0x80;
  const hex = Array.from(bytes).map(b => b.toString(16).padStart(2, '0'));
  const uuid = hex.slice(0, 4).join('') + '-' +
               hex.slice(4, 6).join('') + '-' +
               hex.slice(6, 8).join('') + '-' +
               hex.slice(8, 10).join('') + '-' +
               hex.slice(10, 16).join('');
  return (prefix ? prefix + '_' : '') + uuid;
}

小结

通过上述方式,我们无需任何第三方包即可生成带前缀的UUID v4。如果你希望前缀和UUID之间用别的符号分隔,修改拼接逻辑即可。在安全性要求高的场景,务必使用crypto而非Math.random。

JavaScriptUUID_v4指定前缀随机字符串crypto修改时间:2026-07-25 04:09:19

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。