通用唯一标识符 (UUID) 在项目开发中非常实用,在 Node.js 中有很多方法可以生成 UUID。其中之一是使用本机模块,而其他人则使用 NPM 包。在这篇文章中,将推荐几种在 Node.js 项目中生成 UUID 的方式,并简要了解何时以及为何使用它们。
UUID 是隐藏顺序数据库 ID 的好方法,它们还可以用作哈希,可以解码回整数或其他标识符。顺序自动增量 ID 可以显示比预期的更多的信息。UUID 还有其他很好的用法,还能隐藏自动增量 ID 很突出。
Crypto
crypto
模块是从 Node.js 14.17.0
添加的,它为多种方法和算法提供加密功能,如 OpenSSL
的哈希、HMAC
、密码。它还提供了一种名为 randomUUID
的方法来在 Node.js
中生成 UUID
,而无需安装任何新的 NPM 模块。
该方法采用一个选项对象,该对象可以具有disableEntropyCache默认为值的布尔值。当它设置为true它不使用 UUID 生成的缓存。下面是 Cryto
模块的 randomUUID
函数的示例代码 uuid-crypto.js
:
const crypto = require("crypto");
console.log(crypto.randomUUID());
执行 node uuid-crypto.js
将提供如下输出:
00a6fa25-df29-4701-9077-557932591766
UUID
除了原生加密模块,当然可以使用其他 NPM 包。最流行的用于生成 UUID 的 NPM 包是 uuid。当然,如果应用程序在 Node 版本 14.16 或更低版本中,则需要一个 NPM 包。UUID 也可以在 Node.js 10 和 12 中使用。它还支持 UUID 版本 1、3、4 和 5。
要安装 UUID npm 包,可以运行,npm install —save uuid
,示例代码:
const uuid = require("uuid");
console.log(`Here is a test v1 uuid: ${uuid.v1()}`);
console.log(`Here is a test v4 uuid: ${uuid.v4()}`);
运行后,执行结果如下:
Here is a test v1 uuid: 60b40630-713c-11ec-8cff-7f82f42f57ce
Here is a test v4 uuid: aceaa425-7769-4ad7-af6b-422d25f23be9
nanoid
Nono ID是另一个流行的 NPM 包,用于在 Node.js 中生成 UUID。它将自己标榜为“一个小型、安全、URL 友好、唯一的 JavaScript 字符串 ID 生成器。”。据说它比 UUID 快 2 倍并且更小。它还被移植到 20 种编程语言。
与安装任何其他 NPM 包类似,可以通过执行安装 Nano ID npm install --save nanoid
。下面是使用 Nano ID 包使用 Node.js 生成几个 UUID 的代码示例:
const Nanoid = require('nanoid');
const NanoidAsync = require('nanoid/async');
console.log(`UUID with Nano ID sync: ${Nanoid.nanoid()}`);
(async function() {
const nanoId = await NanoidAsync.nanoid();
console.log(`UUID with Nano ID async: ${nanoId}`);
})();
执行后的结果如下:
UUID with Nano ID sync: yWuImr95L9rj0y74itnSC
UUID with Nano ID async: UyK6T7_ENrr7JKrwz3s37
结论
通过这篇文章,了解了如何在 Node.js 中使用本机加密模块或几个流行的 NPM 包生成 UUID。