乌伊德

为创建 RFC9562 (法语) (原为 RFC4122 导弹用户识别码
[注]
快速启动
1. 安装
npm install uuid
2. 创建UUID
import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
对于时间戳UUID,命名空间UUID,以及其他选项读取在.
API 总结
uuid.NIL | 无 UUID 字符串( 全部为零) | 新建于 [email protected] |
uuid.MAX | 最大 UUID 字符串( 全部) | 新建于 [email protected] |
uuid.parse() | 将 UUID 字符串转换为字节数组 | 新建于 [email protected] |
uuid.stringify() | 将字节数组转换为 UUID 字符串 | 新建于 [email protected] |
uuid.v1() | 创建版本 1( 时间戳) UUID | |
uuid.v1ToV6() | 从 1 个版本创建 6 UUID | 新建于 uuid@10 |
uuid.v3() | 创建版本 3( namespace w/ MD5) UUID | |
uuid.v4() | 创建版本 4 (随机) UUID | |
uuid.v5() | 创建版本 5 (namespace w/ SHA-1) UUID | |
uuid.v6() | 创建版本 6( 时间戳、 重排) UUID | 新建于 uuid@10 |
uuid.v6ToV1() | 从 6 个 UUID 版本创建 1 版本 UUID | 新建于 uuid@10 |
uuid.v7() | 创建版本 7 (Unix Epoch 时间) UUID | 新建于 uuid@10 |
uuid.v8() | "故意留下空白" | |
uuid.validate() | 测试字符串看它是否为有效的 UUID | 新建于 [email protected] |
uuid.version() | 检测 RFC 版本的 UUID | 新建于 [email protected] |
API 密码
u. 尼尔
无 UUID 字符串( 全部为 0) .
示例
import { NIL as NIL_UUID } from 'uuid';
NIL_UUID; // ⇨ '00000000-0000-0000-0000-000000000000'
u. 马克
最大 UUID 字符串( 全部) .
示例
import { MAX as MAX_UUID } from 'uuid';
MAX_UUID; // ⇨ 'ffffffff-ffff-ffff-ffff-ffffffffffff'
uuid.parse( str) (中文(简体) )
将 UUID 字符串转换为字节数组
str | 一个有效的UUID String |
| 返回时 | Uint8Array[16] |
| 掷出 | TypeError 若为 str 无效的 UUID |
[注] 在使用的字节数组中排列值
parse()财务报告和审定财务报表stringify()遵循 UUID 字符串中十六进制的左 QQ 右序 。 如下例所显.
示例
import { parse as uuidParse } from 'uuid';
// Parse a UUID
uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨
// Uint8Array(16) [
// 110, 192, 189, 127, 17,
// 192, 67, 218, 151, 94,
// 42, 138, 217, 235, 174,
// 11
// ]
uuid.stringify(arr[,e
将字节数组转换为 UUID 字符串
arr | Array- 喜欢收集16个值(从 offset0-255之间. |
[offset = 0 个 | Number 在矩阵中开始索引 |
| 返回时 | String |
| 掷出 | TypeError 如果无法生成有效的 UUID 字符串 |
[注] 在使用的字节数组中排列值
parse()财务报告和审定财务报表stringify()遵循 UUID 字符串中十六进制的左 QQ 右序 。 如下例所显.
示例
import { stringify as uuidStringify } from 'uuid';
const uuidBytes = Uint8Array.of(
0x6e,
0xc0,
0xbd,
0x7f,
0x11,
0xc0,
0x43,
0xda,
0x97,
0x5e,
0x2a,
0x8a,
0xd9,
0xeb,
0xae,
0x0b
);
uuidStringify(uuidBytes); // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
uuid.v1([备选案文[、缓冲[、冲 )])
创建 RFC 第 1 版 (时间戳) UUID
[options[ . ] | Object 具有下列一个或多个属性: |
[options.node = (random) [ . ] | RFC "节点" 字段为 Array[6] 字节值(每 4.1.6个) |
[options.clockseq = (random)[ . ] | RFC "时钟序列" 作为 a Number 0 - 0x3fff之间 |
[options.msecs = (current time)[ . ] | RFC"时间戳"字段(Number 毫秒, unix 时代) |
[options.nsecs = 0[ . ] | RFC"时间戳"字段(Number 纳米秒后加入 msecs,应当为0-10 000) |
[options.random = (random)[ . ] | Array 用于生成其它字段的 16 个随机字节( 0-255) 上方 |
[options.rng[ . ] | 备选案文 options.random页:1 Function 返回一个 Array 16个随机字节(0-255) |
[buffer[ . ] | Uint8Array 或者说 Uint8Array 子类型(例如:节点js) Buffer) (中文(简体) ). 如果提供了二进制 UUID, 则写入数组, 起始于 offset |
[offset = 0 个 | Number 开始写入 UUID 字节的索引 buffer |
| 返回时 | 用户名 String 若无 buffer 指定,否则返回 buffer |
| 掷出 | Error 如果要求超过10MUUID/秒 |
[注] 默认 节点编号 (UUID中的最后12位数)在进程启动时随机生成一次,然后在进程持续期间保持不变.
[注]
options.random财务报告和审定财务报表options.rng只有第一次呼吁才有意义v1(),可以通过它们来初始化内部node财务报告和审定财务报表clockseq字段.
示例
import { v1 as uuidv1 } from 'uuid';
uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-9b5d-ab8dfbbd4bed'
使用示例 options数字 :
import { v1 as uuidv1 } from 'uuid';
const options = {
node: Uint8Array.of(0x01, 0x23, 0x45, 0x67, 0x89, 0xab),
clockseq: 0x1234,
msecs: new Date('2011-11-01').getTime(),
nsecs: 5678,
};
uuidv1(options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
uuid.v1TOV6 (uuid) (英语)
将1版的UUID转换为6版
import { v1ToV6 } from 'uuid';
v1ToV6('92f62d9e-22c4-11ef-97e9-325096b39f47'); // ⇨ '1ef22c49-2f62-6d9e-97e9-325096b39f47'
uuid.v3(名称、名称空间[、缓冲[、冲 ))
创建 RFC 第 3 版 (命名空间 w/ MD5) UUID
API 与 API 相同 v5(),但使用"v3"代替.
[大 根据《联邦渔业法》, "如果后向相容性不是一个问题,则首选SHA-1 [版本5]""("史记")
uuid.v4([备选案文[、缓冲[、冲 ]])
创建 RFC 版本 4 (随机) UUID
[options[ . ] | Object 具有下列一个或多个属性: |
[options.random[ . ] | Array 16个随机字节(0-255) |
[options.rng[ . ] | 备选案文 options.random页:1 Function 返回一个 Array 16个随机字节(0-255) |
[buffer[ . ] | Uint8Array 或者说 Uint8Array 子类型(例如:节点js) Buffer) (中文(简体) ). 如果提供了二进制 UUID, 则写入数组, 起始于 offset |
[offset = 0 个 | Number 开始写入 UUID 字节的索引 buffer |
| 返回时 | 用户名 String 若无 buffer 指定,否则返回 buffer |
示例
import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
使用预定义的示例 random 值 :
import { v4 as uuidv4 } from 'uuid';
const v4options = {
random: Uint8Array.of(
0x10,
0x91,
0x56,
0xbe,
0xc4,
0xfb,
0xc1,
0xea,
0x71,
0xb4,
0xef,
0xe1,
0x67,
0x1c,
0x58,
0x36
),
};
uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
uuid.v5(名称、名称空间[、缓冲[、冲 ))
创建 RFC 版本 5( namespace w/ SHA-1) UUID
name | String | Array |
namespace | String | Array[16] 命名空间 UUID |
[buffer[ . ] | Uint8Array 或者说 Uint8Array 子类型(例如:节点js) Buffer) (中文(简体) ). 如果提供了二进制 UUID, 则写入数组, 起始于 offset |
[offset = 0 个 | Number 开始写入 UUID 字节的索引 buffer |
| 返回时 | 用户名 String 若无 buffer 指定,否则返回 buffer |
[注] 皇家金融公司
DNS财务报告和审定财务报表URL命名空间为v5.DNS财务报告和审定财务报表v5.URL。 。 。 .
带有自定义命名空间的示例 :
import { v5 as uuidv5 } from 'uuid';
// Define a custom namespace. Readers, create your own using something like
// https://www.uuidgenerator.net/
const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
RFC 示例 URL 名称空间 :
import { v5 as uuidv5 } from 'uuid';
uuidv5('https://www.w3.org/', uuidv5.URL); // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
uuid.v6([备选案文[、缓冲[、冲 )])
创建 RFC 第 6 个版本( 时间戳、 重排) UUID
这种方法与uuid.v1 () 的参数相同.
import { v6 as uuidv6 } from 'uuid';
uuidv6(); // ⇨ '1e940672-c5ea-64c1-9bdd-2b0d7b3dcb6d'
使用示例 options数字 :
import { v6 as uuidv6 } from 'uuid';
const options = {
node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
clockseq: 0x1234,
msecs: new Date('2011-11-01').getTime(),
nsecs: 5678,
};
uuidv6(options); // ⇨ '1e1041c7-10b9-662e-9234-0123456789ab'
uuid.v6TOV1 (uuid) (英语)
从第6版转换为第1版的UUID
import { v6ToV1 } from 'uuid';
v6ToV1('1ef22c49-2f62-6d9e-97e9-325096b39f47'); // ⇨ '92f62d9e-22c4-11ef-97e9-325096b39f47'
uuid.v7([备选案文[、缓冲[、冲 ]))
创建 RFC 第 7 (随机) UUID
[options[ . ] | Object 具有下列一个或多个属性: |
[options.msecs = (current time)[ . ] | RFC"时间戳"字段(Number 毫秒, unix 时代) |
[options.random = (random)[ . ] | Array 用于生成其它字段的 16 个随机字节( 0-255) 上方 |
[options.rng[ . ] | 备选案文 options.random页:1 Function 返回一个 Array 16个随机字节(0-255) |
[options.seq = (random)[ . ] | 32 位顺序 Number 0 - 0xffffff之间. 提供这种技术可以帮助确保在同一毫秒时间间隔内产生的UUID的独特性。 默认=随机值. |
[buffer[ . ] | Uint8Array 或者说 Uint8Array 子类型(例如:节点js) Buffer) (中文(简体) ). 如果提供了二进制 UUID, 则写入数组, 起始于 offset |
[offset = 0 个 | Number 开始写入 UUID 字节的索引 buffer |
| 返回时 | 用户名 String 若无 buffer 指定,否则返回 buffer |
示例
import { v7 as uuidv7 } from 'uuid';
uuidv7(); // ⇨ '01695553-c90c-745a-b76f-770d7b3dcb6d'
uuid.v8 () (中文(简体) )
"故意留下空白"
[注] 第8版(实验性)UUID为"用于试验或特定供应商的个案" .. RFC没有为他们定义一个创建算法,这就是为什么这个软件包不提供
v8()方法。 这个validate()财务报告和审定财务报表version()然而,方法确实与这些UUID有关.
uuid.validate(str) (中文(简体) )
测试字符串看它是否为有效的 UUID
str | String 用于验证 |
| 返回时 | true 如果字符串是有效的 UUID, false 否则 |
示例
import { validate as uuidValidate } from 'uuid';
uuidValidate('not a UUID'); // ⇨ false
uuidValidate('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ true
使用 validate 财务报告和审定财务报表 version 一起可以进行 per-version 验证,例如只对 v4 UUIds 进行验证.
import { version as uuidVersion } from 'uuid';
import { validate as uuidValidate } from 'uuid';
function uuidValidateV4(uuid) {
return uuidValidate(uuid) && uuidVersion(uuid) === 4;
}
const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210';
const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836';
uuidValidateV4(v4Uuid); // ⇨ true
uuidValidateV4(v1Uuid); // ⇨ false
uuid.version(str) (中文(简体) )
检测 RFC 版本的 UUID
str | 一个有效的UUID String |
| 返回时 | Number RFC 版本的 UUID |
| 掷出 | TypeError 若为 str 无效的 UUID |
示例
import { version as uuidVersion } from 'uuid';
uuidVersion('45637ec4-c85f-11ea-87d0-0242ac130003'); // ⇨ 1
uuidVersion('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ 4
[注] 此方法返回
0联 合 国NILUUID,以及15联 合 国MAXUUID(英语:UUID).
命令行
从命令行可以使用 uuid。 。 。 .
$ npx uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
默认生成版本为4 UUIDS,然而其他版本都得到了支持. 类型 uuid --help 详细情况:
$ npx uuid --help
Usage:
uuid
uuid v1
uuid v3 <name> <namespace uuid>
uuid v4
uuid v5 <name> <namespace uuid>
uuid v7
uuid --help
Note: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs
defined by RFC9562
options 处理时间戳 UUID
在此之前 uuid@11,这是可能的 options 状态,用于干扰用于确保基于时间戳的UUID的独特性的内部状态(即 v1(), (中文(简体) ), v6(),以及 v7() 方法问题。 从开始 uuid@11,这一问题已经通过使用联合国 options 参数作为在两种可能的行为之间选择的旗:
- 无
options:利用内部状态来提高UUID的独特性. - 与
options: 内部状态 没有 必要时适用适当的缺省.
支助
浏览器数字 : uuid 建筑物经过测试 与最新版本的桌面 Chrome、Safari、Firefox和Edge相对应。 这些相同的浏览器的移动版本预计会有效,但目前没有经过测试.
节点数字 : uuid 建筑物经过测试 对节点( e)LTS 发布),加上一个前. 举个例子 在编写本报告时 node@20 是"维护"发行 node@24 是"当前"发行,所以 uuid 支持 node@18- 说吧node@24。 。 。 .
字体:支持过去两年内发布的TS版本. 来源
已知问题
"获得RandomValues () 不支持"
此错误发生于标准的环境 crypto.getRandomValues() API 不支持 。 可以通过增加适当的多填充来解决这一问题:
反应原生/博览会
- 安装
react-native-get-random-values - 导入 在此之前
uuid。自uuid也可能是其他进口商品的过渡依赖性 进口最安全react-native-get-random-values作为进入点的第一件事:
import 'react-native-get-random-values';
import { v4 as uuidv4 } from 'uuid';
从 读取ME js.md 以