一個極小、安全、URL友好的uuid 生成 JS 庫

Nano ID

一個極小、安全、URL友好的uuid 生成 JS 庫

  • 小。139個字節(縮小並壓縮)。沒有依賴關係。
  • 安全。它使用具有加密功能的隨機API。可以在集群中使用。
  • 快速。它比UUID快16%。
  • 緊湊。它使用的字母大於UUID(A-Za-z0-9_-)。因此ID大小從36個符號減少到21個。
一個極小、安全、URL友好的uuid 生成 JS 庫

支持所有瀏覽器,Node.js和React Native。

與UUID的比較

Nano ID與UUID v4(基於隨機)相當。它在ID中具有相似數量的隨機位(Nano ID中為126,UUID中為122),因此它具有相似的衝突概率:

為了使十億分之一的重複機會,必須生成103萬億個版本4 ID。

Nano ID和UUID v4之間存在三個主要區別:

  1. Nano ID使用更大的字母,因此相似數量的隨機位僅用21個符號而不是36個符號進行封裝。
  2. Nano ID碼比uuid/v4封裝少3倍:139個字節而不是435個字節。
  3. 由於內存分配技巧,Nano ID比UUID快16%。

Benchmark

工具類

  • ID大小計算器選擇較小的ID大小取決於您的情況。
  • nanoid-dictionary與常用的字母搭配使用nanoid/generate。
  • nanoid-cli 從CLI生成ID。
  • nanoid-good 確保您的ID不包含任何不好的字詞。

用法

JS

主模塊使用URL友好符號(A-Za-z0-9_-)並返回一個21個字符的ID(具有與UUID v4相似的衝突概率)。

const nanoid = require('nanoid')
model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqLJ"

如果要減小ID的長度(並增加衝突的可能性),則可以將長度作為參數傳遞。

nanoid(10) //=> "IRFa-VaY2b"

不要忘記在我們的ID碰撞概率計算器中檢查ID長度的安全性。

您也可以使用自定義字母 或隨機生成器。

Other Programming Languages

Nano ID was ported to many languages. You can use these ports to have the same ID generators on client and server side.

  • C#
  • Clojure and ClojureScript
  • Crystal
  • Dart
  • Go
  • Elixir
  • Haskell
  • Java
  • Nim
  • PHP
  • Python with dictionaries
  • Ruby
  • Rust
  • Swift

更多使用方法可以查看官方文檔

開源地址:

更多更優質的資訊,請關注我,你的支持會鼓勵我不斷分享更多更好的優質文章。


分享到:


相關文章: