Mengapa saya mencipta pakej UUID baharu untuk Node.js

Susan Sarandon
Lepaskan: 2024-11-15 16:53:03
asal
493 orang telah melayarinya

Why I created a new UUID package for Node.js

Saya telah lama bekerja dengan Node.js dan saya sentiasa menggunakan pakej uuid untuk menjana UUID dalam projek saya. Ia adalah pakej yang hebat dan ia berfungsi dengan baik, tetapi saya sentiasa merasakan bahawa ia boleh dipertingkatkan dalam beberapa aspek.

Masalah

API Mudah

Salah satu perkara yang selalu mengganggu saya tentang pakej uuid ialah ia terhad kepada penjanaan UUID mudah dalam format lalai. Anda perlu tahu cara menukarnya kepada format yang berbeza, yang mungkin agak mengelirukan untuk pemula.

Rentetan UUID yang panjang

Walaupun rentetan UUID ialah format standard, ia tidak begitu sesuai untuk URL atau konteks lain di mana anda memerlukan perwakilan yang lebih padat, seperti base64. Ini memaksa anda untuk menghuraikan rentetan UUID dan menukarnya kepada format yang berbeza, yang boleh menyusahkan sedikit.

Kecekapan storan

Selain itu, bentuk rentetan UUID tidak begitu cekap dari segi ruang storan. Ia menggunakan 36 aksara untuk mewakili nilai 16-bait, yang tidak begitu cekap untuk storan atau penghantaran melalui rangkaian mahupun untuk storan pangkalan data.

Penyelesaian

Untuk menyelesaikan masalah ini, saya memutuskan untuk mencipta pakej baharu yang dipanggil @uuid-ts/uuid yang menyediakan API yang lebih mesra pengguna dan penghuraian automatik UUID daripada format yang berbeza. Ia juga termasuk fungsi utiliti untuk menukar UUID kepada format yang berbeza dan untuk mengesahkan UUID.

Ia ialah kelas TypeScript ringkas dengan sokongan UUID versi 7 yang boleh digunakan dalam kedua-dua Node.js dan persekitaran penyemak imbas. Ia bersifat isomorfik dan boleh digunakan dengan JavaScript dan TypeScript moden tanpa sebarang konfigurasi tambahan.

Ciri-ciri

  • Penghuraian automatik UUID daripada hex, base64 atau penimbal
  • Penjanaan automatik UUID (lalai kepada v7)
  • Penukaran mudah UUID kepada heks, base64 atau penimbal
  • Kaedah utiliti untuk mengesahkan rentetan atau penimbal sedia ada

Penggunaan

Menghuraikan UUID sedia ada sebagai rentetan:

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]
Salin selepas log masuk

Menjana UUID baharu:

const uuid = new Uuid();

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

Menghuraikan UUID daripada Penimbal Node.js:

const uuid = new Uuid(buffer);

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

Ia juga disertakan dengan fungsi utiliti berikut:

Uuid.bufferToUuidHex(buffer: Buffer): rentetan
Uuid.uuidBufferFromHex(uuidHexString: string): Penampan
Uuid.isUuidHexString(uuid: string | Buffer): boolean
Uuid.isUuidBase64String(uuid: string | Buffer): Buffer | null
Uuid.fromHex(hexString: string): Uuid
Uuid.fromBase64(base64String: string): Uuid
Uuid.fromBuffer(buffer: Buffer): Uuid

Kesimpulan

Saya harap pakej ini berguna untuk anda dan ia akan membantu anda bekerja dengan UUID dengan cara yang lebih cekap dan mesra pengguna. Jika anda mempunyai sebarang maklum balas atau cadangan, sila beritahu saya.

Anda boleh mendapatkan pakej pada npm di https://www.npmjs.com/package/@uuid-ts/uuid.

Atas ialah kandungan terperinci Mengapa saya mencipta pakej UUID baharu untuk Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan