JS生成唯一id方式之UUID和NanoID的示例分析
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家分享的是有关JS生成唯一id方式之UUID和NanoID的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、为什么 NanoID 正在取代 UUID1
千家信息网最后更新 2025年02月02日JS生成唯一id方式之UUID和NanoID的示例分析一、为什么 NanoID 正在取代 UUID
二、js如何生成
三、NanoID的方式
这篇文章给大家分享的是有关JS生成唯一id方式之UUID和NanoID的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、为什么 NanoID 正在取代 UUID
1、.更安全 在大多数随机生成器中,它们使用不安全的 Math.random()
。但是,NanoID 使用 crypto
module 和 Web Crypto API
,意味着 NanoID 更安全。 此外,NanoID 在 ID 生成器的实现过程中使用了自己的算法,称为 统一算法,而不是使用"随机 % 字母表" random % alphabet
。
2、 它既快速又紧凑 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
3、兼容性
它还支持 PouchDB
、CouchDB WebWorkers
、Rollup
以及 React
和 Reach-Native
等库。 我们可以使用 npx nanoid
在终端中获得唯一 ID。
二、js如何生成
我们看下他们都是如何用js生成的
首先说下,之前我们是如何生成uuid
的
方法一:
function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });}guid() // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"
方法二:
var _S4 = function() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)}// 获取广告请求唯一ID 方式是当前时间戳+13位随机吗export function GetsingleId() { var _res = (_S4() + _S4() + '-' + _S4() + '-' + _S4() + '-' + _S4() + '-' + _S4() + _S4() + _S4()) return '_' + config.version + '_' + _res}
方法三:
function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 s[8] = s[13] = s[18] = s[23] = "-"; var uuid = s.join(""); return uuid;}uuid() // "ffb7cefd-02cb-4853-8238-c0292cf988d5"
三、NanoID的方式
import { nanoid } from 'nanoid'let idA = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT"//也可以指定生成字符串的长度let idB = nanoid(5)
主要可以通过npm包的形式安装,核心代码如下:
let urlAlphabet = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'let nanoid = (size = 21) => { let id = '' // A compact alternative for `for (var i = 0; i < step; i++)`. let i = size while (i--) { // `| 0` is more compact and faster than `Math.floor()`. id += urlAlphabet[(Math.random() * 64) | 0] } return id}
感谢各位的阅读!关于"JS生成唯一id方式之UUID和NanoID的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
生成
方式
安全
字符
方法
示例
分析
不同
内容
字母
字母表
更多
生成器
算法
篇文章
支持
不错
实用
紧凑
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
暗黑二怎么看在哪个服务器
普陀区软件开发优势
月报网络安全补丁
视频自动制作软件开发
昂楷数据库评论
贵州计算机网络技术可以专升本吗
加工中心刀具数据库
深圳售后软件开发公司
网络安全生产的重要性
深圳网星网络技术有限公司
服务器管理器诊断
山西潮流软件开发值得推荐
网络安全专家学费
网络安全高峰论坛 济南
网络安全班会串讲词
网络安全为心得体会
网络安全容错能力
服务器内存条位置
数据库工程师的自我介绍
iis 服务器包含
电脑方舟端游服务器可以转地图吗
网络安全工程师资格证书领取
武隆区咨询软件开发服务特点
全民参与筑牢网络安全
深圳社交软件开发哪家好
产权交易平台软件开发
前端软件开发工程师面试
网络安全设备与技术
字节跳动数据分析使用的数据库
window服务器管理器