日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
為什么NanoID會取代UUID

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

10年積累的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有嶗山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

了解NanoID和它的用法

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

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

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

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

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

下載量

我希望這些數(shù)字已經(jīng)說服你嘗試 NanoID。

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

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

那么具體有哪些區(qū)別呢?

六個區(qū)別

列舉了六個區(qū)別,可以參考一下。

NanoID 大小只有 108 字節(jié)

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

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

隨著應(yīng)用程序的增長,這些數(shù)字變得可見。

更安全

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

另外,NanoID在實(shí)現(xiàn)ID生成器的過程中使用了它自己的算法,稱為統(tǒng)一算法,而不是使用隨機(jī)%的字母表。

  • Web Crypto API :https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
  • crypto module:https://nodejs.org/api/crypto.html
  • 統(tǒng)一算法: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工具包內(nèi)找到NanoID,并將其用于其他使用情況,如下所示。

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

自定義字母

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

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

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

沒有第三方依賴性

由于NanoID不依賴于任何第三方的依賴,隨著時(shí)間的推移,它變得更加穩(wěn)定的自我管理。從長遠(yuǎn)來看,這有利于優(yōu)化包的大小,并使其不容易出現(xiàn)依賴性帶來的問題。

局限性和未來

局限性

根據(jù) StackOverflow 中的許多專家意見,使用 NanoID 沒有明顯的缺點(diǎn)或限制。

非人類可讀是許多開發(fā)人員在 NanoID 中看到的主要缺點(diǎn),因?yàn)樗拐{(diào)試變得更加困難。但是,與 UUID 相比,NanoID 更短且可讀。

另外,如果你使用NanoID作為表的主鍵,如果你使用同一列作為聚類索引,就會出現(xiàn)問題。這是因?yàn)镹anoID不是順序的。

測試

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

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

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


本文標(biāo)題:為什么NanoID會取代UUID
文章路徑:http://m.5511xx.com/article/dhscjjd.html