成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么 NanoID 會取代 UUID

開發 前端
UUID是軟件開發中最常用的通用標識符之一。在這篇文章中,我將討論NanoID的特點,它的閃光點,以及它的局限性,讓你更好地了解何時使用它。

[[410331]]

UUID是軟件開發中最常用的通用標識符之一。然而,在過去的幾年里,其他的替代品挑戰了它的存在。其中,NanoID是接替UUID的主要競爭者之一。因此,在這篇文章中,我將討論NanoID的特點,它的閃光點,以及它的局限性,讓你更好地了解何時使用它。

了解NanoID和它的用法

當涉及到JavaScript時,生成UUID或NanoID是非常直接的。它們都有NPM包來幫助你完成。

你所需要做的就是使用npm i nanoid命令安裝NanoID NPM庫,并在你的項目中使用它。

  1. import { nanoid } from 'nanoid'
  2. model.id = nanoid(); 
  • 你知道NanoID每周有超過11,754K的NPM下載量,并且比UUID快60%嗎?

此外,NanoID比UUID年輕了將近7年,而且它的GitHub星級已經超過了UUID。

下圖顯示了這兩者之間的npm趨勢對比,我們可以看到NanoID的上升趨勢,而UUID的進展則很平緩。

下載量

我希望這些數字已經說服你嘗試 NanoID。

但是,這兩者之間的主要區別很簡單,它歸結為鍵使用的字母表。

由于 NanoID 使用比 UUID 更大的字母表,因此較短的 ID 可以用于與較長的 UUID 相同的目的。

那么具體有哪些區別呢?

六個區別

列舉了六個區別,可以參考一下。

NanoID 大小只有 108 字節

與 UUID 不同,NanoID 的大小要小 4.5 倍,并且沒有任何依賴關系。此外,大小限制已將大小從另外 35% 減小。

大小減少直接影響數據的大小。例如,使用 NanoID 的對象小而緊湊,用于數據傳輸和存儲。

隨著應用程序的增長,這些數字變得可見。

更安全

在大多數的隨機生成器中,他們使用不安全的Math.random()。但是,NanoID使用crypto module和Web Crypto API,這是更安全的。

另外,NanoID在實現ID生成器的過程中使用了它自己的算法,稱為統一算法,而不是使用隨機%的字母表。

  • Web Crypto API :https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
  • crypto module:https://nodejs.org/api/crypto.html
  • 統一算法:https://github.com/ai/nanoid/blob/main/index.js

快速緊湊

NanoID比UUID快60%。在UUID的字母表里有36個字符,而NanoID只有21個字符。

  1. 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz- 

此外,NanoID支持14種不同的編程語言,它們是:

  1. C#, C++, Clojure and ClojureScript, Crystal, Dart & Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift 

兼容性

它還支持PouchDB、CouchDB WebWorkers、Rollup,以及React和Reach-Native等庫。

你可以通過使用npx nanoid在終端獲得一個唯一的ID。唯一的先決條件是要安裝NodeJS。

此外,你也可以在Redux工具包內找到NanoID,并將其用于其他使用情況,如下所示。

  1. import { nanoid } from ‘@reduxjs/toolkit’ 
  2. console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’ 

自定義字母

NanoID的另一個現有特點是它允許開發者使用自定義字母。你可以改變字面意思或ID的大小,如下所示:

  1. import { customAlphabet } from 'nanoid'
  2. const nanoid = customAlphabet('ABCDEF1234567890', 12); 
  3. model.id = nanoid(); 

在上面的例子中,我定義了一個自定義字母ABCDEF1234567890,Id的大小為12。

沒有第三方依賴性

由于NanoID不依賴于任何第三方的依賴,隨著時間的推移,它變得更加穩定的自我管理。從長遠來看,這有利于優化包的大小,并使其不容易出現依賴性帶來的問題。

局限性和未來

局限性

根據 StackOverflow 中的許多專家意見,使用 NanoID 沒有明顯的缺點或限制。

非人類可讀是許多開發人員在 NanoID 中看到的主要缺點,因為它使調試變得更加困難。但是,與 UUID 相比,NanoID 更短且可讀。

另外,如果你使用NanoID作為表的主鍵,如果你使用同一列作為聚類索引,就會出現問題。這是因為NanoID不是順序的。

測試

上述基準測試顯示了 NanoID 與其他主要 id 生成器相比的性能。

  • 它可以使用默認字母表每秒生成超過 220 萬個唯一 ID,使用自定義字母表時每秒可以生成超過 180 萬個唯一 ID。

根據我使用 UUID 和 NanoID 的經驗,考慮到它的小尺寸、URL 友好性、安全性和速度,我建議在任何未來的項目中使用 NanoID 而不是 UUID。

 

責任編輯:姜華 來源: TianTianUp
相關推薦

2020-01-13 10:16:53

TCPUDP協議

2020-01-15 08:42:16

TCP三次握手弱網絡

2020-04-01 15:30:19

TCPUDP服務器

2018-07-09 14:44:27

存儲

2013-11-26 15:12:40

2023-10-28 00:02:55

2021-12-03 17:22:09

CC++編程語言

2021-02-24 07:42:34

PythonRust語言

2024-06-07 08:33:54

2021-01-25 07:14:53

Cloud DevOps云計算

2022-04-13 20:53:15

Spring事務管理

2023-03-22 09:10:18

IT文檔語言

2014-03-05 14:58:00

蘋果CarPlayiOS

2015-12-07 10:49:43

卸載App用戶體驗

2022-05-11 08:22:54

IO負載NFSOS

2012-03-26 10:26:43

openstackeucalyptus

2012-05-02 10:08:51

桌面Linux微軟

2020-03-30 15:05:46

Kafka消息數據

2012-08-17 10:01:07

云計算

2023-06-16 15:52:19

云計算數據中心
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久91精品国产一区二区三区 | 欧美日韩激情 | 中文字幕成人 | 国产专区视频 | h视频网站在线观看 | 日本三级电影在线观看视频 | 精品久久久网站 | 色婷婷一区二区三区四区 | 久久久久国产一区二区三区四区 | 福利视频网| 国产精品xxxx | 色婷婷综合久久久中文字幕 | 蜜臀久久99精品久久久久久宅男 | 国产乱码精品一区二三赶尸艳谈 | 天天色天天射天天干 | 狠狠热视频 | 日干夜干 | www.伊人.com| 日本高清视频在线播放 | 日韩在线免费播放 | 精品日本中文字幕 | 视频一区 国产精品 | 久久精品中文字幕 | 国产视频三区 | 国产精品视频一二三区 | 97伊人| 欧美激情国产精品 | 成人av在线大片 | 天天色综 | 久久久精品一区 | 久久一起草 | 91视频在线看 | 亚洲91视频 | 日本不卡一区二区三区 | 一区在线观看 | 久久夜色精品国产 | 本道综合精品 | 中文字幕一区二区三区在线乱码 | 国产yw851.c免费观看网站 | 最新国产在线 | 国产精品久久亚洲 |