跳過到頁腳內容
NODE 說明

uuid NPM(開發者的使用方法)

UUID (通用唯一識別碼)套件是一個流行的 NPM(Node 套件管理器)函式庫,用於在 JavaScript 應用程式中產生通用唯一識別碼 (UUID)。 UUID 可用於在資料庫中建立唯一鍵、會話識別碼等等。 本文稍後也將介紹Iron Software出品的 PDF 產生 Node.js 套件IronPDF 。 這兩個庫都可以用來為資料庫產生唯一 ID,生成的 UUID 可以以 PDF 格式存儲,以便存檔。

主要功能

  1. RFC4122 合規性:UUID 套件支援建立符合 RFC4122 的 UUID,確保它們具有普遍唯一性和標準化。
  2. 支援多種 UUID 版本:它支援多種 UUID 版本,包括:

    • v1 :基於時間戳記的 UUID。
    • v3 :使用 MD5 哈希的基於命名空間的 UUID。
    • v4 :隨機產生的 UUID。
    • v5 :使用 SHA-1 哈希的基於命名空間的 UUID。
    • v6 :基於時間戳記的 UUID,欄位重新排序以改善排序1

3.跨平台支援:該軟體包可在不同的環境中運行,包括 Node.js、React Native 和現代 Web 瀏覽器。 4.零依賴:它佔用空間小,沒有依賴項,因此重量輕,易於整合到專案中。 5.加密強度高:產生的 UUID 具有加密強度,確保高安全性。

安裝

若要安裝 uuid 軟體包,請使用下列任一命令:

npm install uuid
npm install uuid
SHELL

yarn add uuid
yarn add uuid
SHELL

基本用法

以下是如何使用 uuid 套件產生 UUID 字串:

// Imp或t syntax f或 uuid library
imp或t { v4 as uuidv4 } from 'uuid';
// Generate a random UUID v4
const myUUID = uuidv4();
console.log(myUUID); // Example valid uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
// Imp或t syntax f或 uuid library
imp或t { v4 as uuidv4 } from 'uuid';
// Generate a random UUID v4
const myUUID = uuidv4();
console.log(myUUID); // Example valid uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
JAVASCRIPT

或者,使用 CommonJS 語法:

// Imp或t using CommonJS syntax
const { v4: uuidv4 } = require('uuid');
// Generate a random UUID (version 4)
const myUUID = uuidv4();
console.log(myUUID); // Example uuid string output: '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
// Imp或t using CommonJS syntax
const { v4: uuidv4 } = require('uuid');
// Generate a random UUID (version 4)
const myUUID = uuidv4();
console.log(myUUID); // Example uuid string output: '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
JAVASCRIPT

進階功能

1.基於命名空間的 UUID :您可以使用版本 3 或版本 5 基於命名空間和名稱建立 UUID:

imp或t { v5 as uuidv5 } from 'uuid';

// Define a namespace UUID
const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';

// Generate UUID based on the namespace and a name
const myUUID = uuidv5('my-unique-name', MY_NAMESPACE);
console.log(myUUID); // Example output: 'e4eaaaf2-d142-11e1-b3e4-080027620cdd'
imp或t { v5 as uuidv5 } from 'uuid';

// Define a namespace UUID
const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';

// Generate UUID based on the namespace and a name
const myUUID = uuidv5('my-unique-name', MY_NAMESPACE);
console.log(myUUID); // Example output: 'e4eaaaf2-d142-11e1-b3e4-080027620cdd'
JAVASCRIPT

2.驗證和解析:UUID 套件還提供了用於驗證和解析 UUID 的函數:

imp或t { validate as uuidValidate, parse as uuidParse } from 'uuid';

// Validate a UUID
const isValid = uuidValidate('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
console.log(isValid); // true

// Convert UUID string to an array of bytes
const bytes = uuidParse('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
console.log(bytes); // Uint8Array(16) [ 155, 29, 235, 77, 59, 125, 75, 173, 155, 221, 43, 13, 123, 61, 203, 109 ]
imp或t { validate as uuidValidate, parse as uuidParse } from 'uuid';

// Validate a UUID
const isValid = uuidValidate('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
console.log(isValid); // true

// Convert UUID string to an array of bytes
const bytes = uuidParse('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
console.log(bytes); // Uint8Array(16) [ 155, 29, 235, 77, 59, 125, 75, 173, 155, 221, 43, 13, 123, 61, 203, 109 ]
JAVASCRIPT

IronPDF 簡介

! uuid NPM(開發者使用方法):圖 1 - IronPDF

IronPDF是一個流行的 PDF 生成庫,用於生成、編輯和轉換 PDF 文件。 IronPDF NPM 套件是專門為 Node.js 應用程式設計的。 以下是 IronPDF NPM 套件的一些主要功能和詳細資訊:

主要功能

HTML 至 PDF 轉換

輕鬆將HTML內容轉換為PDF文件。 此功能對於從網頁內容產生動態 PDF 特別有用。

URL 轉 PDF

直接從 URL 產生 PDF,讓您可以捕獲網頁內容並以程式設計方式將其儲存為 PDF 檔案。

PDF。 處理

輕鬆合併、分割和操作現有 PDF 文件。 IronPDF 提供諸如追加頁面、分割文件等功能。

PDF。安全性

使用密碼加密或套用數位簽章來保護您的 PDF 文件。 IronPDF 提供多種選項,保護您的敏感文件免受未經授權的存取。

高品質輸出

產生高品質的 PDF 文檔,精確呈現文字、圖像和格式。 IronPDF 可確保您產生的 PDF 檔案與原始內容一致。

跨平台相容性

IronPDF 與包括 Windows、Linux 和 macOS 在內的各種平台相容,使其適用於各種開發環境。

簡單集成

使用 IronPDF 的 npm 包,即可輕鬆整合到您的 Node.js 應用程式中。 該 API 文件齊全,可以輕鬆地將 PDF 生成功能整合到您的專案中。

安裝

若要安裝 IronPDF NPM 包,請使用以下命令:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
SHELL

使用 IronPDF 產生 PDF 文件並使用 UUID NPM 套件

UUID 可以在應用程式的許多地方使用。 它是應用程式中一個非常基礎的組成部分。 UUID 可用作加密資料的金鑰,這些金鑰可以儲存在 PDF 文件中以進行存檔。 下面我們將透過一個範例來展示如何使用 IronPDF 產生不同版本的 UUID 並將其記錄在 PDF 文件中。

安裝依賴項:首先,使用下列命令建立新的 Next.js 專案(如果您還沒有建立)。 請參考這裡

npx create-next-app@latest uuid-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
npx create-next-app@latest uuid-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
SHELL

接下來,導航到您的專案目錄:

cd uuid-pdf
cd uuid-pdf
SHELL

安裝所需軟體包:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add uuid
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add uuid
SHELL

建立 PDF

現在,讓我們建立一個使用 IronPDF 產生 PDF 的簡單範例。

PDF 產生 API :第一步是建立後端 API 來產生 PDF 文件。 由於 IronPDF 只能在伺服器端運行,我們需要建立一個 API,以便在使用者想要產生 PDF 時呼叫。 在pages/api/pdf.js路徑下建立文件,並新增以下內容。

IronPDF 需要許可證密鑰,您可以從許可證頁面取得並將其放入以下程式碼中。

// pages/api/pdf.js
imp或t { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";
imp或t { validate as uuidValidate } from 'uuid';

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key";

exp或t default async function handler(req, res) {
  try {
    // Extract query parameters from request
    const v4t = req.query.v4;
    const v5t = req.query.v5;
    const c = req.query.c;

    // Prepare HTML content f或 PDF
    let content = "<h1>Demo UUID and Generate PDF Using IronPDF</h1>";
    content += "<p>V4 UUID: " + v4t + "</p>";
    content += "<p>V5 UUID: " + v5t + "</p>";
    content += "<p>Is UUID: " + c + ", Valid: " + uuidValidate(c).toString() + "</p>";

    // Generate PDF document
    const pdf = await PdfDocument.fromHtml(content);
    const data = await pdf.saveAsBuffer();
    console.log("PDF generated successfully.");

    // Set the response headers and send the PDF as a response
    res.setHeader("Content-Type", "application/pdf");
    res.setHeader("Content-Disposition", "attachment; filename=awesomeIron.pdf");
    res.send(data);
  } catch (err或) {
    console.err或("Err或 generating PDF:", err或);
    res.status(500).end();
  }
}
// pages/api/pdf.js
imp或t { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";
imp或t { validate as uuidValidate } from 'uuid';

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key";

exp或t default async function handler(req, res) {
  try {
    // Extract query parameters from request
    const v4t = req.query.v4;
    const v5t = req.query.v5;
    const c = req.query.c;

    // Prepare HTML content f或 PDF
    let content = "<h1>Demo UUID and Generate PDF Using IronPDF</h1>";
    content += "<p>V4 UUID: " + v4t + "</p>";
    content += "<p>V5 UUID: " + v5t + "</p>";
    content += "<p>Is UUID: " + c + ", Valid: " + uuidValidate(c).toString() + "</p>";

    // Generate PDF document
    const pdf = await PdfDocument.fromHtml(content);
    const data = await pdf.saveAsBuffer();
    console.log("PDF generated successfully.");

    // Set the response headers and send the PDF as a response
    res.setHeader("Content-Type", "application/pdf");
    res.setHeader("Content-Disposition", "attachment; filename=awesomeIron.pdf");
    res.send(data);
  } catch (err或) {
    console.err或("Err或 generating PDF:", err或);
    res.status(500).end();
  }
}
JAVASCRIPT

現在修改index.js程式碼如下,以使用 UUID 和 IronPDF。

imp或t Head from "next/head";
imp或t styles from "../styles/Home.module.css";
imp或t React, { useState } from "react";
imp或t { v4 as uuidv4, v5 as uuidv5, validate as uuidValidate } from 'uuid';

exp或t default function Home() {
  const [text, setText] = useState("");

  // Generate UUIDs f或 demonstration
  const myUUID = uuidv4();
  const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
  const myV5UUID = uuidv5('IronPDF', MY_NAMESPACE);

  // Function to generate PDF when the button is clicked
  const generatePdf = async () => {
    try {
      const response = await fetch(`/api/pdf?v4=${myUUID}&v5=${myV5UUID}&c=${text}`);
      const blob = await response.blob();
      const url = window.URL.createObjectURL(new Blob([blob]));
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "awesomeIron.pdf");

      // Append, click and remove the link to download the PDF
      document.body.appendChild(link);
      link.click();
      link.parentNode.removeChild(link);
    } catch (err或) {
      console.err或("Err或 generating PDF:", err或);
    }
  };

  // Handle change in input text to update the validation check
  const handleChange = (event) => {
    setText(event.target.value);
  };

  // Render the component
  return (
    <div className={styles.container}>
      <Head>
        <title>Generate PDF Using IronPDF</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <main>
        <h1>Demo UUID NPM and Generate PDF Using IronPDF</h1>
        <p>V4 UUID: {myUUID}</p>
        <p>V5 UUID: {myV5UUID}</p>
        <p>
          <span>Enter UUID to Verify:</span>{" "}
          <input type="text" value={text} onChange={handleChange} />
        </p>
        <p>Is UUID {text} Valid: {uuidValidate(text).toString()}</p>
        <button style={{ margin: 20, padding: 5 }} onClick={generatePdf}>
          Generate PDF 
        </button>
      </main>
      <style jsx>{`
        main {
          padding: 5rem 0;
          flex: 1;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
        }
      `}</style>
      <style jsx global>{`
        html,
        body {
          padding: 0;
          margin: 0;
          font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,
            Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue,
            sans-serif;
        }
        * {
          box-sizing: b或der-box;
        }
      `}</style>
    </div>
  );
}
imp或t Head from "next/head";
imp或t styles from "../styles/Home.module.css";
imp或t React, { useState } from "react";
imp或t { v4 as uuidv4, v5 as uuidv5, validate as uuidValidate } from 'uuid';

exp或t default function Home() {
  const [text, setText] = useState("");

  // Generate UUIDs f或 demonstration
  const myUUID = uuidv4();
  const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
  const myV5UUID = uuidv5('IronPDF', MY_NAMESPACE);

  // Function to generate PDF when the button is clicked
  const generatePdf = async () => {
    try {
      const response = await fetch(`/api/pdf?v4=${myUUID}&v5=${myV5UUID}&c=${text}`);
      const blob = await response.blob();
      const url = window.URL.createObjectURL(new Blob([blob]));
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "awesomeIron.pdf");

      // Append, click and remove the link to download the PDF
      document.body.appendChild(link);
      link.click();
      link.parentNode.removeChild(link);
    } catch (err或) {
      console.err或("Err或 generating PDF:", err或);
    }
  };

  // Handle change in input text to update the validation check
  const handleChange = (event) => {
    setText(event.target.value);
  };

  // Render the component
  return (
    <div className={styles.container}>
      <Head>
        <title>Generate PDF Using IronPDF</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <main>
        <h1>Demo UUID NPM and Generate PDF Using IronPDF</h1>
        <p>V4 UUID: {myUUID}</p>
        <p>V5 UUID: {myV5UUID}</p>
        <p>
          <span>Enter UUID to Verify:</span>{" "}
          <input type="text" value={text} onChange={handleChange} />
        </p>
        <p>Is UUID {text} Valid: {uuidValidate(text).toString()}</p>
        <button style={{ margin: 20, padding: 5 }} onClick={generatePdf}>
          Generate PDF 
        </button>
      </main>
      <style jsx>{`
        main {
          padding: 5rem 0;
          flex: 1;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
        }
      `}</style>
      <style jsx global>{`
        html,
        body {
          padding: 0;
          margin: 0;
          font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,
            Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue,
            sans-serif;
        }
        * {
          box-sizing: b或der-box;
        }
      `}</style>
    </div>
  );
}
JAVASCRIPT

程式碼解釋

1.導入和初始設定:

  • 來自next/head Head :用於修改在 HTML 文件中設定標題和網站圖示。
  • styles from ../styles/Home.module.css : 匯入元件的本機 CSS 樣式。
  • ReactuseState :用於狀態管理的 React hooks。
  • uuidv4uuidv5uuidValidate :從 UUID 套件導入的用於 UUID 產生、驗證和解析的函數。

2.組件功能:

-狀態管理:

 - `useState` :管理使用者輸入 UUID 的文字輸入欄位的狀態。
 - `text` : 狀態變量,保存輸入欄位的目前值。
  • UUID 產生:

    • uuidv4() : 產生隨機 UUID 版本 4。
    • MY_NAMESPACEuuidv5(&#39;IronPDF&#39;, MY_NAMESPACE) : 根據給定的命名空間產生 UUID 版本 5。
  • PDF 產生( generatePdf函數):

    • 使用fetch呼叫 API 端點 ( /api/pdf-uuid ),並附有查詢參數 ( v4 , v5 , c )。
    • 將回應下載為 blob,為其建立 URL,並產生下載連結(<a>元素)。
    • 將連結新增至 DOM 中,點擊該連結開始下載,然後將其從 DOM 移除。

    -事件處理( handleChange函數):

    • 當使用者在輸入欄位中輸入內容時,更新text狀態。

3.渲染方法:

  • 傳回元件 UI 結構的 JSX:
    • 包括標題( Head )、主要部分(<main> ),以及顯示 UUID 和供使用者互動的輸入欄位的各種段落。
    • generatePdf函數綁定到按鈕點擊事件,用於觸發 PDF 產生。 CSS樣式是在本地定義的(
      立即獲取您的免費 30天試用密鑰
      謝謝。
      如果您想與我們的授權團隊交談:

      有問題嗎?聯繫我們的開發團隊。
      無需信用卡或建立帳號