首頁  >  文章  >  web前端  >  為什麼我為 Node.js 建立了一個新的 UUID 包

為什麼我為 Node.js 建立了一個新的 UUID 包

Susan Sarandon
Susan Sarandon原創
2024-11-15 16:53:03493瀏覽

Why I created a new UUID package for Node.js

我使用 Node.js 已經很長時間了,我一直使用 uuid 套件在我的專案中產生 UUID。這是一個很棒的包,並且運作良好,但我總覺得它在某些方面還可以改進。

問題

簡單的API

關於 uuid 套件一直困擾我的事情之一是它僅限於預設格式的簡單 UUID 生成。您必須知道如何將其轉換為不同的格式,這對於初學者來說可能有點混亂。

長 UUID 字串

雖然 UUID 字串是標準格式,但它不太適合 URL 或需要更緊湊表示的其他上下文,例如 base64。這會迫使您解析 UUID 字串並將其轉換為不同的格式,這可能有點麻煩。

儲存效率

此外,UUID 的字串形式在儲存空間方面也不是很有效率。它使用 36 個字元來表示 16 位元組的值,這對於儲存或網路傳輸以及資料庫儲存來說效率都不是很高。

解決方案

為了解決這些問題,我決定創建一個名為 @uuid-ts/uuid 的新包,它提供更用戶友好的 API 和自動解析不同格式的 UUID。它還包括用於將 UUID 轉換為不同格式並驗證 UUID 的實用函數。

它是一個簡單的 TypeScript 類,支援 UUID 版本 7,可在 Node.js 和瀏覽器環境中使用。它是同構的,可以與現代 JavaScript 和 TypeScript 一起使用,無需任何額外配置。

特徵

  • 自動從十六進位、base64 或緩衝區解析 UUID
  • 自動產生UUID(預設為v7)
  • 輕鬆將 UUID 轉換為十六進位、base64 或緩衝區
  • 驗證現有字串或緩衝區的實用方法

用法

將現有的 UUID 解析為字串:

const uuidString = '01932c07-209c-7401-9658-4e7a759e7bf7';

const uuid = new Uuid(uuidString);

// methods
uuid.toHex(); // '01932c07-209c-7401-9658-4e7a759e7bf7';
uuid.toBase64(); // 'AZMsByCcdAGWWAAATnp1ng';
uuid.toBuffer(); // [Buffer]
uuid.toInstance<Binary>(Binary); // [Binary]

產生新的 UUID:

const uuid = new Uuid();

uuid.toString(); // '01932c0a-235b-7da6-8153-aee356735b58'

從 Node.js 緩衝區解析 UUID:

const uuid = new Uuid(buffer);

uuid.toString(); // '01932c0b-e834-7b5a-9bae-2964245fc0b6'

它還具有以下實用功能:

Uuid.bufferToUuidHex(buffer: Buffer): string
Uuid.uuidBufferFromHex(uuidHexString: string): Buffer
Uuid.isUuidHexString(uuid: string | Buffer): boolean
Uuid.isUuidBase64String(uuid:字串|緩衝區):緩衝區|空
Uuid.fromHex(hexString: string): Uuid
Uuid.fromBase64(base64String: string): Uuid
Uuid.fromBuffer(緩衝區: Buffer): Uuid

結論

我希望這個包對您有用,並幫助您以更有效率和用戶友好的方式使用 UUID。如果您有任何反饋或建議,請告訴我。

您可以在 npm 上找到該軟體包:https://www.npmjs.com/package/@uuid-ts/uuid。

以上是為什麼我為 Node.js 建立了一個新的 UUID 包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn