什么是 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 字节)
  • 可自定义字母表和长度

常见用途

  1. 数据库主键
  2. URL 友好的 slug 和短链接
  3. 会话和令牌标识符
  4. 上传文件命名
  5. 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

QubitTool 相关工具

相关概念