JSはUUIDとNanoIDというユニークなIDメソッドを生成します

JSはUUIDとNanoIDというユニークなIDメソッドを生成します

序文:

ユニークな ID を持つには、 NanoIDというより良い方法があります。今日の記事では、 NanoIDが UUID に取って代わるということが記録されています。そして、uuid と NanoID を生成する js メソッド。

1. NanoIDがUUIDに取って代わる理由

1. より安全 ほとんどの乱数ジェネレーターでは、安全でないMath.random()が使用されます。ただし、NanoID はcryptoモジュールと Web Crypto APIを使用しているため、NanoID はより安全です。 さらに、NanoID は、 random % alphabetを使用する代わりに、ID ジェネレーターの実装で統合アルゴリズムと呼ばれる独自のアルゴリズムを使用します。

2. 高速かつコンパクトです。NanoID NanoID UUIDよりも 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 WebWorkersRollupReactReach-Nativeなどのライブラリもサポートしています。 npx nanoidを使用してターミナルで一意の ID を取得できます。

2. jsを生成する方法

jsを使ってどのように生成されるか見てみましょう

まず、これまでどのようにuuidを生成したかについて話しましょう。

方法1:

関数guid() {
    'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'を返します。/[xy]/g、関数(c) {
        var r = Math.random() * 16 | 0,
            v = c == 'x' ? r : (r & 0x3 | 0x8);
        v.toString(16) を返します。
    });
}
guid() // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"


方法2:

var _S4 = 関数() {
  (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) を返します。
}

// 広告リクエストの一意の ID を取得します。現在のタイムスタンプ + 13 桁のランダムな数字ですか? export function GetsingleId() {
  var _res = (_S4() + _S4() + '-' + _S4() + '-' + _S4() + '-' + _S4() + '-' + _S4() + _S4() + _S4())
  '_' + config.version + '_' + _res を返します
}


方法3:

関数uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    (var i = 0; i < 36; i++) の場合 {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // time_hi_and_versionフィールドのビット12-15を0010にする
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // clock_seq_hi_and_reservedのビット6-7を01にする
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    uuid を返します。
}
uuid() // "ffb7cefd-02cb-4853-8238-c0292cf988d5"


3. ナノID方式

'nanoid' から {nanoid } をインポートします
idA = nanoid() とします //=> "V1StGXR8_Z5jdHi6B-myT"
//生成される文字列の長さも指定できます。let idB = nanoid(5)


主にnpmパッケージの形でインストールできます。コアコードは次のとおりです。

urlAlphabet = とします
  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' について

ナノイド = (サイズ = 21) => {
  id = ''とする
  // `for (var i = 0; i < step; i++)` のコンパクトな代替。
  i = サイズとする
  (i--) {
    // `| 0` は `Math.floor()` よりもコンパクトで高速です。
    id += urlアルファベット[(Math.random() * 64) | 0]
  }
  戻りID
}

JS でユニーク ID を生成する方法である UUID と NanoID についての説明はこれで終わりです。JS でユニーク ID を生成する方法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 2行のJavascriptコードでUUIDを生成する方法
  • JSは[jQueryに基づいて]クリックしてUUIDを生成する方法の完全な例を実装します
  • JSを使用してUUIDを生成する方法の例
  • グローバルに一意な識別子 (GUID、UUID) を生成する Javascript メソッド

<<:  速度、読み込み、Web アプリケーションなどにおける div と table の違い。

>>:  htm 初心者ノート(初心者は必ず読んでください)

推薦する

MySQL 最適化: キャッシュ最適化 (続き)

MySQL 内部には至るところにキャッシュがあります。MySQL のソースコードを読むと、キャッシ...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

フォームの「Enter」、「Submit」、「Enter != Submit」を削除する方法

「Enter != Submit」問題を実装するには、通常、「ボタンの種類」と「入力ボックスの数」か...

MySQL のバックアップとリカバリの設計アイデア

背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...

Linux ユーザー スクリプトの作成/推測ゲーム/ネットワーク カード トラフィック監視の紹介

目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...

NFS サーバーの原理と、その構築、構成、展開の手順を簡単に分析します。

目次NFS サービスの概要NFS とは何ですか? NFS マウントの原則NFS サーバーはデータ転送...

MySQL準備原理の詳細な説明

準備のメリットPrepare SQL が生成される理由。まず、MySQL サーバー上で SQL を実...

Mysqlデータテーブルでワームレプリケーションを使用する方法

簡単に言えば、MySQL ワーム レプリケーションは、クエリされたデータを指定されたデータ テーブル...

Navicat for MySQL チュートリアル

まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...

MySQL データベース 8 - データベース内の関数の適用の詳細な説明

データベースの組み込み関数の使用この記事では、主に日付関数、文字列関数、数学関数など、データベースの...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

面白いウェブサイトをデザインするための方法とテクニック(写真)

他の人から「つまらない」とか「時代遅れ」というフィードバックを受けて、それを変更しようとしたのに、更...

XHTML タグのネスト規則の分析

XHTML 言語では、ul タグに li が含まれ、dl タグに dt と dd が含まれることは誰...

mysql8.0.20 のダウンロードとインストールおよび発生した問題 (図とテキスト)

1.ブラウザでmysqlを検索してダウンロードしてインストールしますアドレス: https://d...

ElementUIはel-formフォームリセット機能ボタンを実装します

目次ビジネスシナリオ:効果のデモンストレーション:ビジネスシナリオ: el-form を使用する場合...