UUID正在被NanoID取代?
共 2986字,需浏览 6分钟
·
2022-04-18 15:29
UUID 是软件开发中最常用的通用标识符之一。然而,在过去的几年里,其他的竞品挑战了它的存在。
其中,NanoID 是 UUID 的主要竞争对手之一。
因此,在本文中,我们将展开讨论 NanoID 的功能、它的亮点以及它的局限性,以便让我们更好地了解何时使用它。
了解 NanoID 及其用法
npm i nanoid
命令安装 NanoID NPM 库 并在我们的项目中使用它:import { nanoid } from 'nanoid';
model.id = nanoid();
“
你是否知道 NanoID 每周的 NPM 下载量超过 1175.4 万,并且运行起来比 UUID 快 60%?
”
https://www.npmtrends.com/nanoid-vs-uuid
我希望这些数字已经说服你去尝试 NanoID。
但是,这两者之间的主要区别很简单。它归结为键使用的字母表。
1. NanoID 只有 108 个字节那么大
2. 更安全
Math.random()
。但是,NanoID 使用 crypto module
和 Web Crypto API
,意味着 NanoID 更安全。random % alphabet
。3. 它既快速又紧凑
NanoID 比 UUID 快 60%。与 UUID 字母表中的 36 个字符不同,NanoID 只有 21 个字符。
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-
此外,NanoID 支持 14 种不同的编程语言,它们分别是:
C#、C++、Clojure 和 ClojureScript、Crystal、Dart & Flutter、Deno、Go、Elixir、Haskell、Janet、Java、Nim、Perl、PHP、带字典的 Python、Ruby、Rust、Swift
4. 兼容性
npx nanoid
在终端中获得唯一 ID。在 JavaScript 中使用 NanoID 唯一的要求是要先安装 NodeJS。此外,我们还可以在 Redux toolkit 中找到 NanoID,并将其用于其他用例,如下所示;
import { nanoid } from ‘@reduxjs/toolkit’
console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’
5. 自定义字母
import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('ABCDEF1234567890', 12);
model.id = nanoid();
在上面的示例中,我将自定义字母表定义为 ABCDEF1234567890
,并将 Id 的大小定义为 12。另外,搜索公众号互联网架构师后台回复“面试”,获取一份惊喜礼包。
6. 没有第三方依赖
局限性和未来重点
在将来……
“
使用默认字母表每秒可生成超过 220 万个唯一 ID,使用自定义字母表每秒可生成超过 180 万个唯一 ID。
”
根据我使用 UUID 和 NanoID 的经验,考虑到它的小尺寸、URL 友好性、安全性和速度,我建议在任何未来的项目中使用 NanoID 而不是 UUID。
因此,我邀请您在下一个项目中试用 NanoID,并在评论部分与其他人分享您的想法。
原文地址:Why is NanoID Replacing UUID?
原文作者:Charuka Herath
译文出自:掘金翻译计划
本文永久链接:https://github.com/xitu/gold-miner/blob/master/article/2021/why-is-nanoid-replacing-uuid.md
译者:霜羽 Hoarfroster