UUID와 비교했을 때
: UUID v4와 uuid 생성 방식
1.
uuid/v4 라이브러리에 비해 4배 가볍습니다.
2.
더 많은 문자를 사용하여 문자의 수를 21자로 줄였습니다.
보안
: 안전하지 않은 함수인 Math.random() 대신 crypto 모듈과 Web Crypto API를 사용하여 예측불가능한 값을 제공합니다.
: 일반적으로 널리 알려져있는 ID 생성기 방법인 random % alphabet 방식 대신 더 좋은 알고리즘 방식을 사용하여 더 균일된 문자열을 제공합니다.
성능
crypto.randomUUID 21,119,429 ops/sec
uuid v4 20,368,447 ops/sec
@napi-rs/uuid 11,493,890 ops/sec
uid/secure 8,409,962 ops/sec
@lukeed/uuid 6,871,405 ops/sec
nanoid 5,652,148 ops/sec
customAlphabet 3,565,656 ops/sec
secure-random-string 394,201 ops/sec
uid-safe.sync 393,176 ops/sec
shortid 49,916 ops/sec
Async:
nanoid/async 135,260 ops/sec
async customAlphabet 136,059 ops/sec
async secure-random-string 135,213 ops/sec
uid-safe 119,587 ops/sec
Non-secure:
uid 58,860,241 ops/sec
nanoid/non-secure 2,744,615 ops/sec
rndm 2,718,063 ops/sec
Java
복사
: 기준 uuid v4 대비 4배 빠릅니다.
: 그 외 다양한 라이브러리들의 성능도 제공합니다.
버전
: 현재 ECM와 CJS 두 개를 병렬 버전으로 지원, CJS : 3, ECM : 4 설치 시 주의해야함
: 관련 이슈 - https://github.com/ai/nanoid/issues/365
라이브러리 동일 함수
export let nanoid=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce(((t,e)=>t+=(e&=63)<36?e.toString(36):e<62?(e-26).toString(36).toUpperCase():e>62?"-":"_"),"");
TypeScript
복사