如果你的项目有生成唯一 key
或者使用 uuid
的场合,那么从现在开始,请使用 NanoID。之前在文章《分享8个可以提高开发效率的JavaScript库》介绍过 NanoID 。NanoID 是一个创建唯一 key
的轻量级的脚本库,在过去有类似需求首先想到的是 uuid ,与其相比 NanoID 要小得多。
const { nanoid } = require("nanoid");
const key = nanoid();
console.log(key); // U6XRwZsfcDuexQ7m55qdy
从 npmjs.com 信息来看,NanoID 一周的下载量达到上千万,此外,NanoID 比 UUID 小了将近 7 岁,而且它的 GitHub 星数已经超过 UUID 了。下图是两个脚本库的趋势数据图:
查看网站数据可以点击这里:www.npmtrends.com/nanoid-vs-u…。
从上面的数据已经足以说明问题了,下面介绍一下 NanoID 的特点。
体积小
和 UUID 相比,NanoID 的大小要小大概 4.5 倍,压缩大小只有 108 字节,并且没有任何依赖关系。
更安全
在大部分随机生成器使用的是不安全的随机数 Math.random()
。而 NanoID
使用 crypto module 。
此外,NanoID 在 ID 生成器的实现过程中使用了自己的称为统一算法的算法,而不是使用随机的字母表。
更高效
NanoID 比 UUID 快 60%,UUID 的字符表使用 36 个不同字符,而 NanoID 只使用了 21 个字符。
此外,NanoID 还支持 14 种不同的编程语言,它们分别是:
兼容性
NanoID 还支持 PouchDB、CouchDB WebWorkers、Rollup 以及 React 和 Reach-Native 等库。
灵活性
NanoID 的另一个特点是灵活性,它允许开发人员使用自定义字母表。可以更改文字或 id 的大小,如下所示:
const { customAlphabet } = require("nanoid");
const nanoid = customAlphabet("devpointDEV123456789", 6);
const nid = nanoid();
console.log(nid); // 4it6tp
局限性
根据 StackOverflow 中的许多专家意见,使用 NanoID 没有明显的缺点或限制。
可读性方面(不便于记忆)应该算是 NanoID 的主要缺点,另外,NanoID 不是连续的,因此不能作为数据库表的主键。
总结
NanoID正逐渐成为Javascript中最流行的唯一id生成器,大多数开发人员更愿意选择它而不是 UUID 。在考虑到它的体积小、URL 友好性、安全性和高效,因此建议从现在开始在项目中使用 NanoID 取代UUID 。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!