发布于 2026-01-05 16 阅读
0

NanoID——UUID 的替代方案

NanoID——UUID 的替代方案

嘿,程序员们👋

UUID如果你是一名 JavaScript 开发人员,我几乎可以肯定,在你的开发过程中,你至少使用过一次 npm 包。

对于不了解的人来说UUID,这是一个用于生成唯一字符串 ID 的 npm 包。其他语言也有类似的包。

但在本文中,我不会讨论它UUID,而是会讨论另一个很棒的 npm 包,它可以生成一个名为NanoID.

什么是NanoID?

一个体积小巧、安全可靠、对 URL 友好的 JavaScript 唯一字符串 ID 生成器。

为什么选择 NanoID?

  • 由于没有依赖项,所以体积更小。
  • 它比 UUID 快 60%。
  • 它使用加密强度高的随机数API。
  • 它使用的字母表比 UUID(A-Za-z0-9_-)更大。

我们可以控制所用字母的行为。

NanoID几乎支持所有最常用的编程语言

Disclaimer: All the above claims are picked from the package's docs itself. 😉

执行

实现起来非常简单。我会在Node.js环境下使用CommonJS导入语句来编写代码。

基本方法

它将同步生成ID。



// Importing
const { nanoid } = require("nanoid");

// It will generate and return an ID with 21 characters
const id = nanoid();


Enter fullscreen mode Exit fullscreen mode

异步方式

它将异步生成ID。



// Importing async API
const { nanoid } = require("nanoid/async");

// It will generate and return an ID with 21 characters
const id = await nanoid();


Enter fullscreen mode Exit fullscreen mode

定制尺寸

您还可以将所需 ID 的大小作为参数传递。



// Importing
const { nanoid } = require("nanoid");

// It will generate and return an ID with 10 characters
const id = nanoid(10);


Enter fullscreen mode Exit fullscreen mode

减小尺寸会增加碰撞概率。

不安全

如果你追求性能而不关心安全性,那么你可以使用不安全的方式。



// Importing non-secure API
const { nanoid } = require("nanoid/non-secure");

const id = nanoid();


Enter fullscreen mode Exit fullscreen mode

自定义字符或尺寸

您可以控制要在 ID 中包含哪些字符。



// Importing customAlphabet API
const { customAlphabet } = require("nanoid");

// First Param: Characters
// Second Param: ID size
const nanoid = customAlphabet("123456789qwerty", 8);

// Generated ID would be like: "q15y6e9r"
const id = nanoid();


Enter fullscreen mode Exit fullscreen mode

你也可以使用customAlphabetwithasync waynon-secure way



// Importing async API
const { customAlphabet} = require("nanoid/async");

// Importing non-secure API
const { customAlphabet} = require("nanoid/non-secure");


Enter fullscreen mode Exit fullscreen mode

您也可以在这里查看 ID 冲突概率


原文发表于blog.bibekkakati.me


感谢阅读🙏

如果你喜欢这篇文章或觉得它有用,请点赞👍

欢迎联系👋

Twitter | Instagram | LinkedIn


如果你喜欢我的作品并想支持我,可以点击这里。我将不胜感激。



文章来源:https://dev.to/bibekkakati/nanoid-alternative-to-uuid-2kgn