Nano ID
一個極小、安全、URL友好的uuid 生成 JS 庫
- 小。139個字節(縮小並壓縮)。沒有依賴關係。
- 安全。它使用具有加密功能的隨機API。可以在集群中使用。
- 快速。它比UUID快16%。
- 緊湊。它使用的字母大於UUID(A-Za-z0-9_-)。因此ID大小從36個符號減少到21個。
支持所有瀏覽器,Node.js和React Native。
與UUID的比較
Nano ID與UUID v4(基於隨機)相當。它在ID中具有相似數量的隨機位(Nano ID中為126,UUID中為122),因此它具有相似的衝突概率:
為了使十億分之一的重複機會,必須生成103萬億個版本4 ID。
Nano ID和UUID v4之間存在三個主要區別:
- Nano ID使用更大的字母,因此相似數量的隨機位僅用21個符號而不是36個符號進行封裝。
- Nano ID碼比uuid/v4封裝少3倍:139個字節而不是435個字節。
- 由於內存分配技巧,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
更多使用方法可以查看官方文檔
開源地址:
更多更優質的資訊,請關注我,你的支持會鼓勵我不斷分享更多更好的優質文章。
閱讀更多 星集 的文章