写点什么

从现在开始用 NanoID 会取代 UUID

用户头像
devpoint
关注
发布于: 3 小时前
从现在开始用 NanoID 会取代UUID

如果你的项目有生成唯一 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 了。下图是两个脚本库的趋势数据图:



查看网站数据可以点击这里:https://www.npmtrends.com/nanoid-vs-uuid


从上面的数据已经足以说明问题了,下面介绍一下 NanoID 的特点。

体积小

和 UUID 相比,NanoID 的大小要小大概 4.5 倍,压缩大小只有 108 字节,并且没有任何依赖关系。

更安全

在大部分随机生成器使用的是不安全的随机数 Math.random()。而 NanoID 使用 crypto module


此外,NanoID 在 ID 生成器的实现过程中使用了自己的称为统一算法的算法,而不是使用随机的字母表。

更高效

NanoID 比 UUID 快 60%,UUID 的字符表使用 36 个不同字符,而 NanoID 只使用了 21 个字符。


此外,NanoID 还支持 14 种不同的编程语言,它们分别是:


C#、C++、Clojure 和 ClojureScript、Crystal、Dart & Flutter、Deno、Go、Elixir、Haskell、Janet、Java、Nim、Perl、PHP、带字典的 Python、Ruby、Rust、Swift

兼容性

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 。

发布于: 3 小时前阅读数: 8
用户头像

devpoint

关注

细节的追求者 2011.11.12 加入

专注前端开发,用技术创造价值!

评论

发布
暂无评论
从现在开始用 NanoID 会取代UUID