当前位置: 首页 > news >正文

JS片段:生成 UUID

Hi,这里是松桑,每天学习一个 JS 片段,涨涨🧀!今天带来的是如何生成 UUID,UUID作为全局唯一标识,使用常见广泛,包括分布式系统、数据库主键、会话标识、消息队列、日志追踪等等。

什么是UUID

UUID 英文全称为 Universally Unique IDentifier,翻译过来就是:通用唯一标识符。它是一个128位的数字,用于唯一标识互联网上的某个对象或实体。

UUID 是一个在空间和时间上都是唯一的标识符,因为 UUID 是固定的大小,并包含一个时间字段,则值可以翻转(公元3400年左右,取决于具体的算法使用)。UUID 可以用于多种目的,从标记开始生命周期极短的物体,以可靠地识别网络中非常持久的对象。

生成UUID源码

下面的所有实现都符合 RFC4122 v4 标准。

直接通过crypto.randomAPI 可直接生成UUID,Crypto 模块方法是标准化统一的,浏览器和Node端 API 相同。以下为源码:

crypto.randomUUID();
// 'c8d87824-1bb4-4046-bc68-c2ffeed14791'
const { randomUUID } = require('crypto');
randomUUID();
// f51b4b4d-f719-47b3-a39d-33cd7eb6528e

上述实现是符合 RFC 4122 v4版本标准的,想要生成其他版本标准的UUID可以使用 uuidjs/uuid 工具库,完全支持 RFC4122版本1、3、4和5的 UUID。它的特点:

  • 跨平台-支持:CommonJS、 ECMAScript 模块和 CDN 构建、NodeJS12 + (LTS 版本)、Chrome,Safari,Firefox,Edge 浏览器、Webpack 和 rollup.js 模块包等

  • 安全-加密强随机值

  • 小-零依赖,小的内存占用,支持 tree shaking

  • CLI-包含 uuid 命令行实用程序

uuid 工具库生成各版本uuid 代码如下:

const { v1: uuidv1, v4: uuidv4, v5: uuidv5 } = require('uuid');uuidv1();
uuidv4();
uuidv5('https://www.w3.org/', uuidv5.URL);

参考链接

RFC 4122 文稿:https://datatracker.ietf.org/doc/html/rfc4122

相关文章:

  • RabbitMQ(Direct 订阅模型-路由模式)的使用
  • C++ primer Plus第六章编程题
  • 比较(二)利用python绘制雷达图
  • 推荐ChatGPT4.0——Code Copilot辅助编程、Diagrams: Show Me绘制UML图、上传PDF并阅读分析
  • 企业打款验证API在Java、Python、PHP中的使用教程
  • YOLOv10环境搭建推理测试
  • 程序员的灵魂究竟是什么
  • 人天软件项目管理复盘
  • AI大模型页面
  • 华为校招机试 - 字符串解析(20240515)
  • Django企业招聘后台管理系统开发实战四
  • 什么牌子的无线领夹麦克风好?一文读懂领夹麦克风什么牌子好!
  • Java排序算法汇总篇,八种排序算法
  • 【启明智显芯片应用】Model3C芯片4.3寸拼图机应用方案
  • Ubuntu上安装Open CASCADE(OCC)
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【前端学习】-粗谈选择器
  • Apache的80端口被占用以及访问时报错403
  • CentOS从零开始部署Nodejs项目
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Object.assign方法不能实现深复制
  • Redis的resp协议
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue:响应原理
  • zookeeper系列(七)实战分布式命名服务
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 关于extract.autodesk.io的一些说明
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 蓝海存储开关机注意事项总结
  • 实战|智能家居行业移动应用性能分析
  • 跳前端坑前,先看看这个!!
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 学习HTTP相关知识笔记
  • ​iOS安全加固方法及实现
  • ​批处理文件中的errorlevel用法
  • # .NET Framework中使用命名管道进行进程间通信
  • # 计算机视觉入门
  • #define、const、typedef的差别
  • #Spring-boot高级
  • #微信小程序:微信小程序常见的配置传值
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (day 12)JavaScript学习笔记(数组3)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (分布式缓存)Redis持久化
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十二)Flink Table API
  • (十三)Flink SQL
  • (四)opengl函数加载和错误处理