跳過到頁腳內容
NODE 說明

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

Node.js是一個強大的JavaScript執行環境,它透過提供高效且可擴展的應用程式開發環境,徹底改變了伺服器端程式設計。 在眾多可供開發者使用的Node.js軟體包中, fs-extraIronPDF因其完善的文件處理和 PDF 創建功能而脫穎而出。

fs-extra是 Node 原生模組的增強版本。 它提供了更友善的使用者 API 和用於檔案操作(如複製、移動和刪除)的附加方法。 支援 Promise 可以簡化非同步編程,確保流暢的檔案系統管理,並簡化JSON檔案的處理。

相反, IronPDF是一個功能強大的 PDF 庫,它允許程式設計師產生、修改和提取 PDF 文件中的內容。 它可用於從 HTML 或未格式化的文字建立 PDF 文件合併多個 PDF以及向 PDF添加頁首、頁尾、浮水印和其他自訂項目。 這使其成為快速建立發票、報告和其他文件的寶貴工具。

透過整合fs-extraIronPDF ,開發人員可以在其Node.js應用程式中建立複雜的檔案管理系統並產生專業品質的 PDF。 這種組合保證了程式能夠有效地處理複雜的文件和文件處理任務,同時提高生產效率。

什麼是 fs-extra npm?

fs-extra套件是一個靈活的Node.js實用程序,它擴展了內建的 fs(檔案系統)模組,提供了更多功能來簡化日常檔案操作。 它提供了諸如 fs.movefs.remove 之類的功能,使複製、移動和刪除檔案和目錄等任務變得更加容易。 此外,fs-extra 還附帶了用於讀取和寫入 JSON 檔案(fs.ensureFile)以及執行其他方便操作的工具。 它支援 Promise,允許使用 async/await 語法來更方便地管理非同步程式設計。 所有 fs 方法都會傳回 promise,fs-extra 也包含同步方法。

fs extra npm(開發者使用方法):圖 1 - Node.js:fs-extra

fs-extra 的特性

fs-extra 是在原生 fs 模組的功能基礎上擴充而來的,是Node.js的一個改良型檔案系統模組。 它深受開發人員的歡迎,提供了一系列強大而實用的文件和目錄管理技術。 與原有的 fs 模組相比,fs-extra 除了為標準 fs 方法添加了 promise 支援之外,還具有以下特性:

增強的文件操作

-複製: fs.copy(src, dest): 將目錄和檔案(包括嵌套內容)從來源複製到目標。 -移動: fs.move(src, dest): 傳輸資料夾和文件,並提供重新命名選項。 -刪除: fs.remove(path): 遞歸刪除資料夾和檔案。

目錄操作

-確保目錄: fs.ensureDir(path): 驗證目錄是否已存在; 否則,建立目錄。 -空目錄: fs.emptyDir(path): 刪除目錄的內容,但保留目錄本身。 -確保文件: fs.ensureFile(path):驗證文件是否已存在; 否則,創建文件。

JSON 處理

-讀取 JSON: fs.readJson(path): 讀取 JSON 檔案並解析其內容。 -寫入 JSON: fs.writeJson(path, data):將JavaScript物件以 JSON 格式寫入檔案。

承諾支持

-基於 Promise 的 API:大多數方法傳回 Promise,讓使用 async/await 語法編寫非同步程式碼變得更加容易。

向後相容性

-完全支援 fs 模組: fs-extra 包含了原生 fs 模組的所有標準方法,因此可以作為直接替換,並具有完全向後相容性。

便利方法

-輸出檔案: fs.outputFile(path, data):如果目錄不存在,則建立目錄並將資料寫入檔案。 -輸出 JSON: fs.outputJson(path, data):在將 JSON 中的JavaScript物件寫入檔案之前,如果資料夾不存在則建立資料夾。 -讀取檔案: 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() 將 JSON 物件寫入data.json` 檔案。最後,它使用fs.readJson()從檔案中讀取 JSON 資料並將其記錄到控制台。 這些過程中發生的錯誤會被捕獲並記錄下來。 然後,透過呼叫performFileOperations**函數依序執行這些操作,來示範 fs-extra 在Node.js中進行檔案和目錄管理的實用性和易用性。

輸出

fs extra npm(開發者使用方法):圖 3 - 檔案總管輸出,顯示 exampleDir 目錄以及使用Node.js應用程式中的 fs-extra 函式庫以程式設計方式建立的檔案

將 fs-extra 與IronPDF結合使用

透過將IronPDF用於可靠的 PDF 生成,將fs-extra用於改進檔案系統操作,從而為Node.js開發人員創建了一個強大的工具包。 本教學將向您展示如何使用IronPDF和 fs-extra 設定Node.js項目,並將包含範例程式碼來說明如何將它們一起使用。

IronPDF是什麼?

IronPDF是一個功能強大的Node.js庫,旨在將 HTML 資料轉換為品質極高的 PDF 檔案。 它能加快 HTML、CSS 和其他JavaScript檔案轉換為格式正確的 PDF 的過程,而不會破壞原始網頁內容。 這對於需要產生動態、可列印文件(如發票、憑證和報告)的 Web 應用程式非常有用。

IronPDF具有多種功能,包括可自訂的頁面設定、頁首、頁尾以及新增字體和圖像的選項。 它可以管理複雜的樣式和佈局,以確保每個測試 PDF 輸出都符合規格。 此外, IronPDF控制 HTML 中的JavaScript執行,實現精確的動態互動內容渲染。

fs extra npm(開發者使用方法):圖 4 - IronPDF for Node.js: Node.js PDF 庫

IronPDF的特點

從 HTML 產生 PDF

將 HTML、CSS 和JavaScript轉換為 PDF。 支援媒體查詢和響應式設計等現代網路標準,方便使用 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 的結構由 HTML 內容定義,該 HTML 內容包含在htmlContent中。 它使用 IronPDF 的PdfDocument類,透過fromHtml()方法插入 HTML 內容,並使用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 增強檔案操作,以及如何使用IronPDF在Node.js應用程式中輕鬆建立和操作 PDF。

輸出 PDF

fs extra npm(開發者使用方法):圖 6 - 使用IronPDF和 fs-extra 產生的輸出 PDF:moved_sample.pdf

結論

最後, fs-extraIronPDF共同為Node.js應用程式中的檔案系統操作和 PDF 生成管理提供了一個可靠的解決方案。 fs-extra 透過改進的方法簡化了建立目錄、複製、移動和刪除檔案等任務,並為高效的檔案管理建立了強大的基礎。 同時, IronPDF在文件建立和處理方面提供了靈活性,可以輕鬆地將 HTML 內容轉換為 PDF 文件。

這些程式庫結合起來,使開發人員能夠輕鬆創建動態應用程序,從而創建、管理和處理 PDF 文件。 fs-extraIronPDF的整合使開發人員能夠在Node.js環境中利用強大的功能來滿足各種文件處理需求,無論是建立發票、報告或動態文件。

透過IronPDFIron Software ,您可以擴展節點開發工具包,使其具備 OCR、條碼掃描、PDF 生成、Excel 互動以及其他眾多功能。 Iron Software提供高度可配置的系統和一系列社群支援的插件,使開發人員能夠更快地創建功能和 Web 應用程式。

IronPDF提供詳細的文檔,許可選項從 $999 等計劃開始,使開發人員能夠輕鬆地選擇最適合其專案需求的模式。 這些功能使開發人員能夠有效率、有效地解決各種問題。

來賓:Engage Elephant

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

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

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

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

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我