js uuid生成_一个极小、安全、URL友好的uuid 生成 JS 库

Nano ID

一个极小、安全、URL友好的uuid 生成 JS 库

  • 小。139个字节(缩小并压缩)。没有依赖关系。
  • 安全。它使用具有加密功能的随机API。可以在集群中使用。
  • 快速。它比UUID快16%。
  • 紧凑。它使用的字母大于UUID(A-Za-z0-9_-)。因此ID大小从36个符号减少到21个。
265d78249fe36b34383e47f38349c0a8.png

支持所有浏览器,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

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

开源地址:

更多更优质的资讯,请关注我,你的支持会鼓励我不断分享更多更好的优质文章。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值