跳過到頁腳內容
NODE 說明

fs extra npm(開發者的使用方法)

Node.js 是一個強大的 JavaScript 執行環境,通過提供有效且可擴展的應用程序開發環境徹底改變了伺服器端編程。 Among the many Node.js packages available to developers, fs-extra and IronPDF stand out for their sophisticated file handling and PDF creation capabilities.

fs-extra 是 Node 原生 fs 模組的增強版。 它提供了一個更易於使用的 API 和額外的文件操作方法,如複製、移動和刪除。 支持承諾的異步編程使得文件系統管理更容易,簡化了 JSON 文件的處理。

反之,IronPDF 是一個強大的 PDF 庫,可讓程序員生成、修改和提取 PDF 文件中的內容。 It is useful for creating PDF documents from HTML or unformatted text, combining several PDFs, and adding headers, footers, watermarks, and other customizations to PDFs. 這使其成為一個有價值的工具,能夠即時創建發票、報告等文檔。

By integrating fs-extra and IronPDF, developers can create complex file management systems and produce professional-quality PDFs within their Node.js applications. 這種組合能保證程式能有效處理複雜的文件和文檔處理任務,並提高生產力。

什麼是 fs-extra npm?

fs-extra 套件是一個靈活的 Node.js 工具,擴展了內建的 fs(文件系統)模組,提供了更多功能以簡化常規文件操作。 它提供了如 fs.copyfs.movefs.remove 等函數,使複製、移動和刪除文件和目錄等任務更容易。 此外,fs-extra 配備了 用于讀取和寫入 JSON 文件的工具(fs.readJsonfs.writeJson),檢查目錄或文件是否存在(fs.ensureDirfs.ensureFile)以及執行其他方便的操作。 它支持 Promises,允許使用 async/await 語法更舒適地管理異步編程。 所有 fs 方法都返回 promises,而 fs-extra 也包括同步方法。

fs-extra npm(對開發人員的工作方式):圖 1 - Node.js:fs-extra

fs-extra 的特性

擴展了原生 fs 模組的特性,fs-extra 是一個改進的 Node.js 文件系統模組。 它是開發人員的熱門選擇,提供了一系列強大而實用的文件和目錄管理技術。 與原始的 fs 模組相比,fs-extra 擁有以下特性,並在標準 fs 方法中增加了承諾支持:

增強的文件操作

  • 複製fs.copy(src, dest):將來源中的目錄和文件(包括嵌套內容)複製到目标。
  • 移動fs.move(src, dest):傳輸文件夾和文件,提供重新命名的選項。
  • 刪除fs.remove(path):遞歸刪除文件夾和文件。

目錄操作

  • 確認目錄fs.ensureDir(path):檢查目錄是否已存在; 如果沒有,則創建目錄。
  • 清空目錄fs.emptyDir(path):刪除目錄中的內容,但保留目錄本身不變。
  • 確認文件fs.ensureFile(path):檢查文件是否已存在; 如果沒有,則創建該文件。

JSON 處理

  • 讀取 JSONfs.readJson(path):讀取 JSON 文件並解析其內容。
  • 寫入 JSONfs.writeJson(path, data):將 JavaScript 對象作為 JSON 寫入文件。

承諾支持

  • 基於承諾的 API:大多數方法返回Promisses,這使得使用async/await語法編寫異步代碼更加容易。

向後兼容性

  • 完整的 fs 模組支持:fs-extra 包含了所有原生 fs 模組的標準方法,使其成為一個可以替換的完全向後兼容的選擇。

便利方法

  • 輸出文件fs.outputFile(path, data):若目錄不存在則創建目錄後,將數據寫入文件。
  • 輸出 JSONfs.outputJson(path, data):若目錄不存在則創建目錄後,將 JavaScript 對象作為 JSON 寫入文件。
  • 讀取文件fs.readFile(path):讀取文件內容。
  • 寫入文件fs.writeFile(path, data):將數據寫入文件。
  • 路徑存在fs.pathExists(path):檢查給定路徑上是否存在文件或目錄。

創建符號鏈接

  • 確認符號鏈接fs.ensureSymlink(srcpath, dstpath):檢查是否存在符號鏈接,若不存在則創建一個。

創建和配置帶有 fs-extra 的 Node.js 項目

通過創建並配置如下來在 Node.js 項目中使用 fs-extra 庫:

設置項目

首先,為您的項目創建一個目錄並使用 npm 啟動全新的 Node.js 項目(npm init -y)。 這將填充應用程式的基本結構。

安裝 fs-extra

使用 npm 安裝 fs-extra 庫:

npm install fs-extra
npm install fs-extra
SHELL

使用 fs-extra

為了演示 fs-extra 的用法,在您偏好的文本編輯器中打開 index.js,並添加以下範例代碼。

// Import the fs-extra module
const fs = require('fs-extra');

// Asynchronous function to perform various file operations
async function performFileOperations() {
  try {
    // Ensure a directory exists; create it if it doesn't
    await fs.ensureDir('exampleDir');

    // Create a file and write some data to it
    await fs.outputFile('exampleDir/exampleFile.txt', 'Hello, world!');

    // Read the file's content
    const data = await fs.readFile('exampleDir/exampleFile.txt', 'utf-8');
    console.log('File Content:', data);

    // Recursively copy the file
    await fs.copy('exampleDir/exampleFile.txt', 'exampleDir/copyOfExampleFile.txt');

    // Move the file to a new location
    await fs.move('exampleDir/copyOfExampleFile.txt', 'exampleDir/movedExampleFile.txt');

    // Remove the file
    await fs.remove('exampleDir/movedExampleFile.txt');

    // Ensure a file exists; create it if it doesn't
    await fs.ensureFile('exampleDir/newFile.txt');

    // Write JSON data to a file
    const jsonData = { name: 'John Doe', age: 30 };
    await fs.writeJson('exampleDir/data.json', jsonData);

    // Read JSON data from a file
    const jsonFileContent = await fs.readJson('exampleDir/data.json');
    console.log('JSON File Content:', jsonFileContent);
  } catch (err) {
    console.error('Error during file operations:', err);
  }
}

// Execute the file operations
performFileOperations();
// Import the fs-extra module
const fs = require('fs-extra');

// Asynchronous function to perform various file operations
async function performFileOperations() {
  try {
    // Ensure a directory exists; create it if it doesn't
    await fs.ensureDir('exampleDir');

    // Create a file and write some data to it
    await fs.outputFile('exampleDir/exampleFile.txt', 'Hello, world!');

    // Read the file's content
    const data = await fs.readFile('exampleDir/exampleFile.txt', 'utf-8');
    console.log('File Content:', data);

    // Recursively copy the file
    await fs.copy('exampleDir/exampleFile.txt', 'exampleDir/copyOfExampleFile.txt');

    // Move the file to a new location
    await fs.move('exampleDir/copyOfExampleFile.txt', 'exampleDir/movedExampleFile.txt');

    // Remove the file
    await fs.remove('exampleDir/movedExampleFile.txt');

    // Ensure a file exists; create it if it doesn't
    await fs.ensureFile('exampleDir/newFile.txt');

    // Write JSON data to a file
    const jsonData = { name: 'John Doe', age: 30 };
    await fs.writeJson('exampleDir/data.json', jsonData);

    // Read JSON data from a file
    const jsonFileContent = await fs.readJson('exampleDir/data.json');
    console.log('JSON File Content:', jsonFileContent);
  } catch (err) {
    console.error('Error during file operations:', err);
  }
}

// Execute the file operations
performFileOperations();
JAVASCRIPT

上面的代碼片段展示了改進的 Node.js 文件系統模組 fs-extra 庫的特性。 腳本實現了一個名為 performFileOperations 的異步方法,進行幾個文件操作程序,在導入 fs-extra後。 使用 fs.ensureDir() 方法,它首先驗證名為“exampleDir”的目錄是否存在。 然後使用 fs.outputFile() 方法,在該目錄下創建一個名為“exampleFile.txt”的文件,並寫入文本“Hello, world!” 使用 fs.readFile(),腳本讀取文件內容並將其日誌記錄到控制台。

控制台輸出

fs-extra npm(對開發人員的工作方式):圖 2 - 使用 fs-extra 庫進行文件處理的 Node.js 應用程式的控制台輸出

此外,它使用fs.copy()等遞歸函數將文件複製到“copyOfExampleFile.txt”,然後使用 fs.move() 將該複製件重新定位到“movedExampleFile.txt”。 然後,fs.remove() 用於刪除已移動的文件。腳本使用 fs.ensureFile() 函數來驗證“newFile.txt”的存在,並使用 fs.writeJson() 向“data.json”文件寫入 JSON 對象。最後,使用 fs.readJson() 從文件讀取 JSON 數據並將其日誌記錄到控制台。 這些過程中出現的錯誤會被捕獲並記錄下來。 然後通過調用 performFileOperations 函數來依次執行這些操作,展示了 fs-extra 在 Node.js 中進行文件和目錄管理的實用性和易用性。

輸出

fs-extra npm(對開發人員的工作方式):圖 3 - 文件資源管理器輸出,顯示使用 Node.js 應用程序中 fs-extra 庫以程式創建的 exampleDir 目錄和文件。

結合 fs-extra 和 IronPDF

A potent toolkit for Node.js developers is produced by combining IronPDF for reliable PDF production with fs-extra for improved file system operations. 本教程將向您展示如何使用 IronPDF 和 fs-extra 設置 Node.js 項目,並包含展示如何將它們結合使用的範例代碼。

什麼是 IronPDF?

IronPDF 是一個強大的 Node.js 庫,旨在將 HTML 數據轉換為高質量的 PDF 文件。 它加速了將 HTML、CSS 和其他 JavaScript 文件轉換為格式良好的 PDF 的過程,而不會影響原始 Web 內容。 這對於需要生成動態、可打印文檔(如發票、證書和報告)的 Web 應用程序來說是非常有用的。

IronPDF 擁有多個功能,包括可定制的頁面設置、頁眉、頁腳以及添加字體和圖像的選項。 它可以處理複雜的樣式和佈局,以確保每次 PDF 輸出都符合規範。 此外,IronPDF 管理 HTML 中的 JavaScript 執行,允許準確地呈現動態和交互式內容。

!fs-extra npm(對開發人員的工作方式):圖 4 - Node.js 的 IronPDF:Node.js PDF 庫

IronPDF 的特點

從 HTML 生成 PDF

將 HTML、CSS 和 JavaScript 轉換為 PDF。 支持現代 Web 標準,如媒體查詢和響應設計,這對於使用 HTML 和 CSS 動態修飾 PDF 文檔、報告和單據非常方便。

PDF 編輯

  • 向現有的 PDF 添加文本、圖像和其他材料。
  • 從 PDF 文件中提取文本和圖像。
  • 合併多個 PDF 成為一個單獨的文件。
  • 將 PDF 文件分割成幾個不同的文檔。
  • 添加頁眉、頁腳、批註和水印。

性能和可靠性

設計特性包括工業環境中的高性能和可靠性。 它可以輕鬆處理大型文檔集。

安裝 IronPDF

要獲取在 Node.js 項目中使用 PDF 的工具,請安裝 IronPDF 套件

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

將 fs-extra npm 與 IronPDF 結合

為了演示使用 fs-extra 和 IronPDF 結合使用,在您偏好的文本編輯器中打開 index.js,並添加以下代碼:

// Import fs-extra and IronPDF libraries
const fs = require('fs-extra');
const IronPdf = require("@ironsoftware/ironpdf");

const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' }); // Set your IronPDF license key here

// Asynchronous function to create and manage PDF files
async function createAndManagePDF() {
  try {
    // Ensure the parent directory exists
    const outputDir = 'output';
    await fs.ensureDir(outputDir);

    // Define the HTML content for the PDF
    const htmlContent = `
      <html>
        <head>
          <title>Sample PDF</title>
        </head>
        <body>
          <h1>Hello, world!</h1>
          <p>This is a sample PDF generated using IronPDF and fs-extra.</p>
        </body>
      </html>
    `;

    // Initialize IronPDF and generate a PDF from the HTML content
    let pdf = await document.fromHtml(htmlContent);
    const pdfPath = `${outputDir}/sample.pdf`;
    await pdf.saveAs(pdfPath);
    console.log('PDF generated successfully:', pdfPath);

    // Read the PDF file and check its size
    const pdfData = await fs.readFile(pdfPath);
    console.log('PDF file size:', pdfData.length);

    // Copy the PDF file
    const copiedPdfPath = `${outputDir}/copied_sample.pdf`;
    await fs.copy(pdfPath, copiedPdfPath);
    console.log('PDF copied successfully:', copiedPdfPath);

    // Move the copied PDF file
    const movedPdfPath = `${outputDir}/moved_sample.pdf`;
    await fs.move(copiedPdfPath, movedPdfPath);
    console.log('PDF moved successfully:', movedPdfPath);

    // Remove the original PDF file
    await fs.remove(pdfPath);
    console.log('Original PDF removed successfully:', pdfPath);
  } catch (err) {
    console.error('Error during PDF creation and management:', err);
  }
}

// Execute the PDF creation and management operations
createAndManagePDF();
// Import fs-extra and IronPDF libraries
const fs = require('fs-extra');
const IronPdf = require("@ironsoftware/ironpdf");

const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' }); // Set your IronPDF license key here

// Asynchronous function to create and manage PDF files
async function createAndManagePDF() {
  try {
    // Ensure the parent directory exists
    const outputDir = 'output';
    await fs.ensureDir(outputDir);

    // Define the HTML content for the PDF
    const htmlContent = `
      <html>
        <head>
          <title>Sample PDF</title>
        </head>
        <body>
          <h1>Hello, world!</h1>
          <p>This is a sample PDF generated using IronPDF and fs-extra.</p>
        </body>
      </html>
    `;

    // Initialize IronPDF and generate a PDF from the HTML content
    let pdf = await document.fromHtml(htmlContent);
    const pdfPath = `${outputDir}/sample.pdf`;
    await pdf.saveAs(pdfPath);
    console.log('PDF generated successfully:', pdfPath);

    // Read the PDF file and check its size
    const pdfData = await fs.readFile(pdfPath);
    console.log('PDF file size:', pdfData.length);

    // Copy the PDF file
    const copiedPdfPath = `${outputDir}/copied_sample.pdf`;
    await fs.copy(pdfPath, copiedPdfPath);
    console.log('PDF copied successfully:', copiedPdfPath);

    // Move the copied PDF file
    const movedPdfPath = `${outputDir}/moved_sample.pdf`;
    await fs.move(copiedPdfPath, movedPdfPath);
    console.log('PDF moved successfully:', movedPdfPath);

    // Remove the original PDF file
    await fs.remove(pdfPath);
    console.log('Original PDF removed successfully:', pdfPath);
  } catch (err) {
    console.error('Error during PDF creation and management:', err);
  }
}

// Execute the PDF creation and management operations
createAndManagePDF();
JAVASCRIPT

以上 Node.js 代碼範例結合了 IronPDF 以創建和管理 PDF 文件與 fs-extra 進行高級文件系統操作。 它首先使用 fs.ensureDir() 函數確保名為“output”的目錄存在。 目錄是一種將目錄和文件進行分層分組的方式。 將創建的 PDF 的結構由盛載在 htmlContent 中的 HTML 內容定義。 它使用 IronPDF 的 PdfDocument 類插入 HTML 內容,方法是使用 fromHtml(),然後使用 saveAs() 函數將生成的 PDF 保存到 “output/sample.pdf”。

輸出

 fs-extra npm(對開發人員的工作方式):圖 5 - 使用 fs-extra 和 IronPDF 庫合併的 Node.js 應用程式的控制台輸出。 該程序使用 fs-extra 庫進行文件和目錄處理,並使用 IronPDF 庫將 HTML 內容轉換為 PDF 文檔。

fs-extra 然後用來繼續文件操作:fs.readFile() 獲取 PDF 的內容以跟踪其大小。 fs.copy() 將創建的 “output/sample.pdf” 複製到 “output/copied_sample.pdf”,然後使用 fs.move() 方法將該複製件移動到 “output/moved_sample.pdf”,最後刪除原始的 PDF。 通過 try-catch 塊進行錯誤處理,確保在執行 fs 方法或活動期間出現的任何問題被適當地捕獲並記錄。 總體而言,這種配置展示了如何使用 fs-extra 增強文件操作,以及如何在 Node.js 應用程式中使用 IronPDF 輕鬆創建和操作 PDF。

輸出 PDF

 fs-extra npm(對開發人員的工作方式):圖 6 - 使用 IronPDF 和 fs-extra 生成的輸出 PDF:moved_sample.pdf

結論

Finally, fs-extra and IronPDF together provide a solid solution for managing file system operations and PDF production in Node.js applications. 通過其改進的方法,fs-extra 簡化了如創建目錄、複製、移動和刪除文件等任務,並建立了一個強大的基礎以提高文件管理效能。 同時,IronPDF 提供了靈活的文檔創建和處理功能,允許輕鬆將 HTML 內容轉換為 PDF 文檔。

將這些庫結合起來,開發人員可以輕鬆創建動態應用程式,能夠生成、管理和處理 PDF 文件。 結合 fs-extraIronPDF,允許開發人員解決 Node.js 環境中的各種文檔處理需求,無論是創建發票、報告還是動態文檔,都具有強大的功能。

With the help of IronPDF and Iron Software, you can expand your toolkit for node development with OCR, barcode scanning, PDF production, Excel interaction, and a host of other functions. Iron Software 提供高配置系統和一系列由社群支持的插件,讓開發人員能更快地創建功能和 Web 應用程式。

IronPDF 提供詳細的文檔和授權選項,起始計划如 $799,使開發人員能輕鬆選擇適合其專案需求的最佳模式。 這些功能使開發人員能夠高效解決各種問題。

客人:引入大象

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。