NanoID——UUID 的替代方案
嘿,程序员们👋
UUID如果你是一名 JavaScript 开发人员,我几乎可以肯定,在你的开发过程中,你至少使用过一次 npm 包。
对于不了解的人来说
UUID,这是一个用于生成唯一字符串 ID 的 npm 包。其他语言也有类似的包。
但在本文中,我不会讨论它UUID,而是会讨论另一个很棒的 npm 包,它可以生成一个名为NanoID.
什么是NanoID?
一个体积小巧、安全可靠、对 URL 友好的 JavaScript 唯一字符串 ID 生成器。
为什么选择 NanoID?
- 由于没有依赖项,所以体积更小。
- 它比 UUID 快 60%。
- 它使用加密强度高的随机数API。
- 它使用的字母表比 UUID(A-Za-z0-9_-)更大。
我们可以控制所用字母的行为。
NanoID几乎支持所有最常用的编程语言。
Disclaimer: All the above claims are picked from the package's docs itself. 😉
执行
实现起来非常简单。我会在Node.js环境下使用CommonJS导入语句来编写代码。
基本方法
它将同步生成ID。
// Importing
const { nanoid } = require("nanoid");
// It will generate and return an ID with 21 characters
const id = nanoid();
异步方式
它将异步生成ID。
// Importing async API
const { nanoid } = require("nanoid/async");
// It will generate and return an ID with 21 characters
const id = await nanoid();
定制尺寸
您还可以将所需 ID 的大小作为参数传递。
// Importing
const { nanoid } = require("nanoid");
// It will generate and return an ID with 10 characters
const id = nanoid(10);
减小尺寸会增加碰撞概率。
不安全
如果你追求性能而不关心安全性,那么你可以使用不安全的方式。
// Importing non-secure API
const { nanoid } = require("nanoid/non-secure");
const id = nanoid();
自定义字符或尺寸
您可以控制要在 ID 中包含哪些字符。
// Importing customAlphabet API
const { customAlphabet } = require("nanoid");
// First Param: Characters
// Second Param: ID size
const nanoid = customAlphabet("123456789qwerty", 8);
// Generated ID would be like: "q15y6e9r"
const id = nanoid();
你也可以使用customAlphabetwithasync way和non-secure way。
// Importing async API
const { customAlphabet} = require("nanoid/async");
// Importing non-secure API
const { customAlphabet} = require("nanoid/non-secure");
您也可以在这里查看 ID 冲突概率。
原文发表于blog.bibekkakati.me
感谢阅读🙏
如果你喜欢这篇文章或觉得它有用,请点赞👍
欢迎联系👋
Twitter | Instagram | LinkedIn
如果你喜欢我的作品并想支持我,可以点击这里。我将不胜感激。
文章来源:https://dev.to/bibekkakati/nanoid-alternative-to-uuid-2kgn