什么是 NanoID?
NanoID 是一个用于 JavaScript 的小巧、安全、URL 友好的唯一字符串 ID 生成器。它生成比 UUID 更短的紧凑标识符,同时保持类似的碰撞抵抗能力。
快速了解
| 全称 | Nano ID |
|---|---|
| 创建时间 | 2017 年由 Andrey Sitnik 创建 |
| 规范文档 | 官方规范 |
NanoID 工作原理
NanoID 默认使用加密安全的随机数生成器生成 21 个字符的 ID。与 UUID 不同,NanoID 使用更大的字母表(A-Za-z0-9_-),这使得 ID 更短同时保持唯一性。默认的 21 个字符 ID 与 UUID v4 具有相似的碰撞概率。NanoID 在现代 JavaScript 应用程序中很流行,用于生成数据库记录、URL slug 和会话令牌的 ID。它比 UUID 库更小,没有依赖项。
主要特点
- 默认 21 个字符(可配置)
- URL 安全字母表(A-Za-z0-9_-)
- 加密安全的随机生成
- 比 UUID 更小(21 vs 36 个字符)
- 无依赖,体积小(约 130 字节)
- 可自定义字母表和长度
常见用途
- 数据库主键
- URL 友好的 slug 和短链接
- 会话和令牌标识符
- 上传文件命名
- React 组件 key
示例
import { nanoid } from 'nanoid';
// 默认 21 字符 ID
const id = nanoid();
// 输出: V1StGXR8_Z5jdHi6B-myT
// 自定义长度
const shortId = nanoid(10);
// 输出: IRFa-VaY2b
// 自定义字母表
import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('0123456789', 8);
const numericId = nanoid();
// 输出: 48293756