2024-12-07 import { v4 as uuidv4 } from ''uuid'';

2024-12-07 import { v4 as uuidv4 } from ‘’uuid’’;

要使用 import { v4 as uuidv4 } from 'uuid';,需要安裝 uuid 這個 npm 套件。以下是詳細步驟:


安裝指令

在你的項目根目錄,運行以下命令來安裝 uuid

1
npm install uuid

使用說明

  1. 安裝完後,就可以在你的項目中使用 uuid 提供的功能,例如生成唯一的 UUID:

    1
    2
    3
    4
    import { v4 as uuidv4 } from 'uuid';

    const uniqueId = uuidv4(); // 生成一個新的 UUID
    console.log(uniqueId); // 如 "1b4e28ba-2fa1-11d2-883f-0016d3cca427"
  2. 為什麼選擇 uuid

    • uuid 是生成唯一標識符(Universally Unique Identifier,簡稱 UUID)的標準工具。
    • v4 是一種生成隨機 UUID 的版本(基於隨機數)。
    • 安全且廣泛使用於需要唯一標識的場景(如筆記 ID、會話令牌等)。
  3. 檢查版本
    確保你安裝的是 uuid 的最新版本,可以運行:

    1
    npm show uuid version

注意

如果在安裝後仍然遇到問題,確認以下事項:

  • 確保使用的是支持 ES 模塊(import 語法)的環境。

  • 如果是舊版 Node.js,可能需要使用 require 語法:

    1
    const { v4: uuidv4 } = require('uuid');
  • 如果有 TypeScript,需要安裝對應型別定義:

    1
    npm install --save-dev @types/uuid

    UUID 簡介

UUID 全名是 Universally Unique Identifier(通用唯一識別碼)。它是一種標準,用於生成全球範圍內幾乎不會重複的唯一標識符。常用於需要唯一性標識的情況,比如數據庫中的主鍵、文件名、會話標識等。


UUID 的特點

  1. 全球唯一性: 理論上每個生成的 UUID 都是唯一的,重複的概率極低。
  2. 結構固定: 通常是 128 位(16 字節),以 36 個字元的格式表示:
    1
    xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
    • M 表示 UUID 的版本號,例如 v4
    • N 表示變體信息,通常與兼容性有關。
  3. 無需中心化: 不需要中央服務器協調,也能保證生成的值具有唯一性。

UUID 的常見版本

UUID 有多種版本,目前最常用的是 v4v1

  1. UUID v4(隨機生成):

    • 基於隨機數生成,沒有基於時間或設備的信息。
    • 非常適合用於大部分應用場景。
    • 例如:3f2504e0-4f89-11d3-9a0c-0305e82c3301
  2. UUID v1(基於時間戳生成):

    • 包含時間戳和網卡的 MAC 地址。
    • 更適合需要按時間排序的場景。
    • 例如:550e8400-e29b-41d4-a716-446655440000

UUID 的用途

  1. 唯一標識符:
    用於需要唯一性的場景,如數據庫中的主鍵。

    1
    2
    const userId = uuidv4();
    console.log(userId); // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  2. 文件命名:
    避免文件名衝突。

    1
    const fileName = `${uuidv4()}.png`;
  3. Session 或 Token:
    用於標識用戶的會話或生成 API 的訪問令牌。

  4. 分布式系統:
    在無法使用中心化數據庫生成主鍵時,UUID 是分布式系統中一種可靠的標識符。


為什麼使用 UUID?

  1. 去中心化: UUID 不依賴於任何外部系統或伺服器來生成。
  2. 防止衝突: 即使多個系統獨立生成 UUID,出現重複的概率也極低。
  3. 簡單方便: 使用現有工具(如 npm 的 uuid)即可快速生成。

示例:生成 UUID

1
2
3
4
5
import { v4 as uuidv4 } from 'uuid';

// 生成一個唯一的 UUID
const uniqueId = uuidv4();
console.log(uniqueId); // 例如: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

常見問題

  • UUID 是真的絕對唯一嗎?
    • 雖然 UUID 沒有絕對保證唯一性,但重複的概率非常低。以 UUID v4 為例,其重複的概率是極其微小的(每生成 10 億個 UUID,理論上需要 68 年才可能出現一次重複)。