NanoId简介
在浏览一些开源项目时,发现了NanoId这个工具包。简单了解了下它的相关概念,感觉它应该是一个挺有帮助的工具,在这里和大家分享一下。
什么是NanoId ?
根据其官方描述,NanoId是
A tiny, secure, URL-friendly, unique string ID generator for JavaScript.
即一个小巧的、安全的、URL友好的唯一ID生成器。
是不是跟uuid很像?没错,它们是同一类工具。
NanoId与uuid有什么区别?
既然已经有了使用更为广泛的uuid,为什么还要有一个nanoid?
它们之间还是有一些差异点的。
- 比uuid略快(官方数据是快了16%)
- 其默认字符集比uuid使用的字符集大一些,所以默认生成的结果比uuid的结果要短
另外nanoid提供了一系列的API可以使用。
- Async 异步方式调用,避免CPU浪费
- Non-Secure 不使用硬件随机器,大大提升速度,但碰撞概率会变高
- 自定义字符集和长度,不同的字符集和不同的长度组合,对应的碰撞概率也会不同
同时nanoid还提供了一些工具:
- Nanoid-good 确保产生的nanoid中不包含冒犯性的词汇,如F**K之类的。
NanoId有什么使用场景
所有使用uuid产生随机数的场景,都可以考虑使用nanoid进行替代。
还有一些特定的场景,会更适合nanoid。
比如说基于随机数的url短链生成器:uuid产生的结果过长,所以不太适合于URL短链随机id这个应用场景。这个时候就可以用nanoid的自定义字符串集和长度的特性了。
当然url越短,碰撞的概率就越高,还是要做好取舍。
NanoId提供了一个工具,用于计算给定条件下的碰撞概率。参见 https://zelark.github.io/nano-id-cc/ 。
关于NanoId就介绍到这里,希望对大家有所帮助。