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 初心者ノート(初心者は必ず読んでください)

推薦する

DOM操作テーブルの例(DOMはテーブルを作成します)

1. HTML タグを使用してテーブルを作成します。コードをコピーコードは次のとおりです。 <...

Ubuntu環境でPHPとNginxをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...

Idea の起動速度を改善し、Tomcat ログの文字化けを解決する方法

目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...

MySQL設定ファイルを変更できない問題の解決方法(Win10)

他の人のために解決した問題を記録します。問題の説明MySQLのバージョンは5.7、オペレーティングシ...

ポータルサイトのフォーカス画像のデザインに関するいくつかの結論

フォーカス画像は、画像、テキスト、動的なインタラクティブ効果を統合したコンテンツを表示する方法です。...

Windows Server 2016 リモート デスクトップ サービスを展開するためのクイック スタート ガイド

現在、2016サーバーは、win2008や2012よりも優れたマルチサイトhttpsサービスをサポー...

MySQL シャーディングの詳細

1. ビジネスシナリオの紹介MySQLを使用する電子商取引システムがあるとします。大量のデータを保存...

HTML テーブル マークアップ チュートリアル (42): テーブル ヘッダーの水平方向の配置属性 ALIGN

水平方向では、テーブル ヘッダーの配置を左、中央、右に設定できます。基本的な構文<TH ALI...

MySQL 集計統計データの低速クエリの最適化

前面に書かれた注文テーブル、アクセス記録テーブル、商品テーブルなど、日常生活でデータベースを操作する...

MySQL で重複を削除するには、distinct または group by を使用する必要がありますか?

序文group by と distinctive のパフォーマンス比較について: インターネット上の...

Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明

ワイルドカードのカテゴリ: %パーセント ワイルドカード: 任意の文字が任意の回数出現できることを示...

Dockerイメージの作成とプロジェクト全体のワンクリックパッケージングとデプロイ

一般的な Dockerfile 命令の紹介命令説明するから新しいイメージが構築される基となるイメージ...

FTP環境設定ソリューション(vsftpd)の詳細な説明

1. vsftpdコンポーネントをインストールするインストールコマンド: [root@ink4t ~...

MySQL 外部キー制約の詳細な説明

公式ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/...

Vant+postcss-pxtoremはブラウザ適応機能を実装します

Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...