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
更多使用方法可以查看官方文档
开源地址:
更多更优质的资讯,请关注我,你的支持会鼓励我不断分享更多更好的优质文章。