亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS生成唯一id方式之UUID和NanoID

 更新時間:2021年12月17日 11:32:41   作者:Aaron  
這篇文章主要介紹了JS生成唯一id方式之UUID和NanoID,唯一id有了更好的方式,那就是NanoID,今天這篇文章記錄一下NanoID 正在取代 UUID?及js 生成uuid及NanoID的方法,下面來看文章的詳細介紹

前言:

唯一id有了更好的方式,那就是NanoID,今天這篇文章記錄一下NanoID 正在取代 UUID?及js 生成uuid及NanoID的方法。

一、為什么 NanoID 正在取代 UUID

1、.更安全 在大多數(shù)隨機生成器中,它們使用不安全的 Math.random() 。但是,NanoID 使用 crypto module 和 Web Crypto API,意味著 NanoID 更安全。 此外,NanoID 在 ID 生成器的實現(xiàn)過程中使用了自己的算法,稱為 統(tǒng)一算法,而不是使用“隨機 % 字母表” random % alphabet。

2、 它既快速又緊湊 NanoIDUUID 快 60%。與 UUID 字母表中的 36 個字符不同,NanoID 只有 21 個字符。

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

C#、C++、Clojure 和 ClojureScript、Crystal、Dart & Flutter、Deno、Go、Elixir、Haskell、Janet、Java、Nim、Perl、PHP、帶字典的 Python、Ruby、Rust、Swift


3、兼容性

它還支持 PouchDBCouchDB WebWorkers、Rollup 以及 React Reach-Native 等庫。 我們可以使用 npx nanoid 在終端中獲得唯一 ID。

二、js如何生成

我們看下他們都是如何用js生成的

首先說下,之前我們是如何生成uuid

方法一:

function guid() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = Math.random() * 16 | 0,
            v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}
guid() // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"


方法二:

var _S4 = function() {
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
}

// 獲取廣告請求唯一ID 方式是當前時間戳+13位隨機嗎
export function GetsingleId() {
  var _res = (_S4() + _S4() + '-' + _S4() + '-' + _S4() + '-' + _S4() + '-' + _S4() + _S4() + _S4())
  return '_' + config.version + '_' + _res
}


方法三:

function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid;
}
uuid() // "ffb7cefd-02cb-4853-8238-c0292cf988d5"


三、NanoID的方式

import { nanoid } from 'nanoid'
let  idA = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT"
//也可以指定生成字符串的長度
let  idB = nanoid(5)


主要可以通過npm包的形式安裝,核心代碼如下:

let urlAlphabet =
  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'

let nanoid = (size = 21) => {
  let id = ''
  // A compact alternative for `for (var i = 0; i < step; i++)`.
  let i = size
  while (i--) {
    // `| 0` is more compact and faster than `Math.floor()`.
    id += urlAlphabet[(Math.random() * 64) | 0]
  }
  return id
}

到此這篇關(guān)于JS生成唯一id方式之UUID和NanoID的文章就介紹到這了,更多相關(guān)JS生成唯一id方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js Canvas實現(xiàn)的日歷時鐘案例分享

    js Canvas實現(xiàn)的日歷時鐘案例分享

    本文主要分享了js實現(xiàn)的日歷時鐘案例,具有一定的參考價值,下面跟著小編一起來看下吧
    2016-12-12
  • js實現(xiàn)旋轉(zhuǎn)的星空效果

    js實現(xiàn)旋轉(zhuǎn)的星空效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)旋轉(zhuǎn)的星空效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 微信小程序?qū)崿F(xiàn)換膚功能

    微信小程序?qū)崿F(xiàn)換膚功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)換膚功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • js學習心得_一個簡單的動畫庫封裝tween.js

    js學習心得_一個簡單的動畫庫封裝tween.js

    下面小編就為大家?guī)硪黄猨s學習心得_一個簡單的動畫庫封裝tween.js。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • JavaScript實現(xiàn)區(qū)塊鏈

    JavaScript實現(xiàn)區(qū)塊鏈

    很多朋友都聽說過比特幣和以太幣這樣的加密貨幣,但是只有極少數(shù)人懂得隱藏在它們背后的技術(shù),接下來通過本文給大家介紹用JavaScript來創(chuàng)建一個簡單的區(qū)塊鏈來演示它們的內(nèi)部究竟是如何工作的,感興趣的朋友一起看看吧
    2018-03-03
  • javascript+HTML5的Canvas實現(xiàn)Lab單車動畫效果

    javascript+HTML5的Canvas實現(xiàn)Lab單車動畫效果

    這篇文章主要介紹了javascript+HTML5的Canvas實現(xiàn)Lab單車動畫效果,涉及javascript使用Canvas配合數(shù)學運算實現(xiàn)自行車動畫效果,需要的朋友可以參考下
    2015-08-08
  • JS獲取復選框的值,并傳遞到后臺的實現(xiàn)方法

    JS獲取復選框的值,并傳遞到后臺的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狫S獲取復選框的值,并傳遞到后臺的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • JS實現(xiàn)碰撞檢測的方法分析

    JS實現(xiàn)碰撞檢測的方法分析

    這篇文章主要介紹了JS實現(xiàn)碰撞檢測的方法,結(jié)合實例形式分析了javascript碰撞檢測的原理與相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 微信小程序-可移動菜單的實現(xiàn)過程詳解

    微信小程序-可移動菜單的實現(xiàn)過程詳解

    這篇文章主要介紹了微信小程序-可移動菜單的實現(xiàn)過程詳解,我們可以經(jīng)常看到手機app里有的菜單欄是懸浮在首頁的,用戶可以拖動和點擊菜單欄進行交互,今天就教大家利用小程序的控件,,需要的朋友可以參考下
    2019-06-06
  • 一文搞懂JavaScript如何實現(xiàn)圖片懶加載

    一文搞懂JavaScript如何實現(xiàn)圖片懶加載

    圖片懶加載,往往作為減少首頁白屏時間的一個解決方案而出現(xiàn)。本文將通過示例帶大家一起探究一下JavaScript是如何實現(xiàn)圖片懶加載的,感興趣的可以了解一下
    2022-06-06

最新評論