sqids-javascript:基于 JavaScript 的数字与唯一 ID 转换库项目

Official JavaScript port of Sqids. Generate short unique IDs from numbers.

分支1Tags6
文件最后提交记录最后更新时间
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
1 年前
2 年前
2 年前
2 年前

Sqids JavaScript

npm version Downloads

Sqids(发音为 "squids")是一个小型库,可让您从数字生成唯一 ID。它适用于链接缩短、快速且 URL 安全的 ID 生成,以及解码回数字以实现更快的数据库查找。

特性:

  • 编码多个数字 - 从一个或多个非负数字生成短 ID
  • 快速解码 - 轻松将 ID 解码回数字
  • 唯一 ID - 通过一次打乱字母表生成唯一 ID
  • ID 填充 - 提供最小长度使 ID 更加统一
  • URL 安全 - 自动生成的 ID 不包含常见的亵渎性词汇
  • 随机化输出 - 顺序输入会生成非连续的 ID
  • 多种实现 - 支持40 多种编程语言

🧰 用例

适用于:

  • 为公共 URL 生成 ID(例如:链接缩短)
  • 为内部系统生成 ID(例如:事件跟踪)
  • 解码以实现更快的数据库查找(例如:通过主键)

不适用于:

  • 敏感数据(这不是加密库)
  • 用户 ID(可被解码,从而泄露用户数量)

🚀 快速开始

yarn:

yarn add sqids

npm

npm install sqids

cdnjs

<script src="https://cdnjs.cloudflare.com/ajax/libs/sqids/0.3.0/sqids.min.js"></script>

jsDelivr

<script src="https://cdn.jsdelivr.net/npm/sqids/dist/sqids.min.js"></script>

👩‍💻 示例

简单编码与解码:

import Sqids from 'sqids'

const sqids = new Sqids()
const id = sqids.encode([1, 2, 3]) // "86Rf07"
const numbers = sqids.decode(id) // [1, 2, 3]

注意 🚧 由于算法设计原因,多个 ID 可能会解码为相同的数字序列。如果您的设计要求 ID 具有唯一性,您必须手动重新编码解码后的数字,并检查生成的 ID 是否匹配。

强制设置 ID 的最小长度:

import Sqids from 'sqids'

const sqids = new Sqids({
  minLength: 10,
})
const id = sqids.encode([1, 2, 3]) // "86Rf07xd4z"
const numbers = sqids.decode(id) // [1, 2, 3]

通过提供自定义字母表来随机生成 ID:

import Sqids from 'sqids'

const sqids = new Sqids({
  alphabet: 'FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE',
})
const id = sqids.encode([1, 2, 3]) // "B4aajs"
const numbers = sqids.decode(id) // [1, 2, 3]

防止特定词语出现在自动生成的 ID 中的任何位置:

import Sqids from 'sqids'

const sqids = new Sqids({
  blocklist: new Set(['86Rf07']),
})
const id = sqids.encode([1, 2, 3]) // "se8ojk"
const numbers = sqids.decode(id) // [1, 2, 3]

📝 许可证

MIT