跳過到頁腳內容
NODE 說明

NestJS Node.js(開發者的使用方法)

NestJS 是一個靈活且不斷進步的Node.js框架,旨在創建高效且可擴展的伺服器端應用程式和可擴展的前端應用程式。 它利用TypeScript( JavaScript的靜態類型超集)來提高程式碼可維護性和開發人員效率。 NestJS 擁有彈性且模組化的設計,融合了函數式程式設計 (FP)、物件導向程式設計 (OOP) 和函數式響應式程式設計 ( FRP ) 的原則。 NestJS 透過簡化開發流程並專注於模組化、依賴注入和裝飾器,促進編寫高度可測試和可維護的程式碼。

相反, IronPDF是一個功能強大的庫,旨在簡化在Node.js應用程式中建立、編輯和處理 PDF 文件的過程。 它可以將 HTML 轉換為 PDF,合併 PDF,添加浮水印,以及從 PDF 中提取文字和圖像,此外還有許多其他功能。 IronPDF提供了一個簡單的 API,用於動態建立和管理 PDF,並且可以輕鬆地與Node.js可擴展的伺服器端應用程式進行互動。

開發者可以透過結合 NestJS 和IronPDF來創建需要動態 PDF 創建和操作的複雜線上應用程式。 產生報告、發票和其他文件驅動操作的應用程式可能會發現此整合特別有用。 透過 IronPDF 強大的 PDF 功能和 NestJS 的組織化和模組化設計,開發人員可以創建具有複雜文件處理功能的高效能應用程式和出色的專案。

NestJS是什麼?

NestJS是一個開源的、漸進式的Node.js伺服器端應用程式開發框架,它高效且可擴展。 它採用TypeScript編寫,並使用受 Angular 影響的模組化架構,以利用現代JavaScript特性提高開發人員的效率。 NestJS 使用依賴注入和裝飾器來鼓勵編寫組織良好的程式碼,從而產生經過嚴格測試且易於維護的應用程式。

該框架支援多種傳輸層,包括 HTTP、WebSocket 和 gRPC,因此開發者可以利用它設計各種應用程式。 它透過與 Express 和 Fastify 等流行的Node.js框架無縫集成,提供了多功能性和穩健性。 NestJS 還透過提供對資料庫、身份驗證和驗證的內建支持,使開發人員更容易建立複雜的應用程式。

NestJS 擁有豐富的 Nest CLI、詳盡的文件和活躍的社區,是建立高效的無伺服器解決方案、微服務和企業級應用程式的完美工具。 由於其模組化設計,保證了可擴展性和易於維護,因此它是現代 Web 開發工具的熱門選擇。 它使開發人員能夠創建可擴展的前端應用程式並提高開發人員的工作效率。

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

NestJS 的特性

TypeScript支持

NestJS 的建置使用了TypeScript,它是JavaScript的靜態型別超集,提供了複雜的自動完成、型別安全性和現代語言特性。 這提高了程式碼的可維護性,並有助於在編譯過程中檢測錯誤。 NestJS 預設支援JavaScript和TypeScript ,為開發者提供了更大的自由度。

模組化建築

NestJS鼓勵採用模組化的程式碼組織方式。 將控制器、提供者和服務等相關元件封裝在單一模組中,可以更輕鬆地維護、擴展和組織程式碼。 該應用程式的模組可以用於其他領域,從而鼓勵 DRY(不要重複自己)理念。

依賴注入

NestJS 的一個主要特性是其完善的依賴注入系統,這使得管理相依性變得更加容易。 NestJS 透過注入依賴項而不是硬編碼依賴項,建立鬆散連結且可測試的元件。 這種設計風格也使得編寫模組化程式碼和改進關注點分離成為可能。

裝飾師

NestJS 中大量使用裝飾器來建立和設定類別及其成員。 使用諸如 @Injectable() 等裝飾器,可以提高程式碼的可讀性和表達力,使應用程式的每個組件的功能和行為方式都變得清晰明了。

與 Express 和 Fastify 相容

由於 NestJS 具有良好的適應性,開發者可以選擇使用 Fastify 或 Express 作為底層 HTTP 伺服器。 雖然 Fastify 效能更佳,但 Express 以其用戶友善性和高效性而聞名。 由於這種多功能性,開發者可以根據獨特的需求自訂應用程式。

中介軟體

NestJS 支援類似 Express 的中間件功能。 在請求到達路由處理程序之前,中間件可以處理它們,提供諸如正文解析、身份驗證和日誌記錄等功能。 這有助於實現可重複使用的請求處理邏輯。

例外處理

NestJS 擁有強大的異常處理系統,可讓程式設計師建立獨特的異常過濾器。 這些過濾器可以透過以標準化的方式捕獲和處理異常,從而提高應用程式的錯誤管理和回應一致性。

管道和護罩

管道:資料轉換和驗證透過管道實現。管道可以在控制器層級、路由處理程序層級或全域層級實現。 驗證和轉換管道是內建的,也可以建立自訂管道。

守衛:授權和認證的邏輯由守衛實現。 他們會使用特定的規則,例如驗證使用者角色或權限,來決定是否批准請求。

建立和配置 NestJS

只需幾個簡單的步驟即可建立和設定 NestJS 專案。 以下是建立新專案的完整指南。

安裝 NestJS CLI

首先使用 Yarn 或 npm 全域安裝 NestJS CLI。

npm install -g @nestjs/cli
npm install -g @nestjs/cli
SHELL

建立新專案

要啟動一個新的 NestJS 項目,請使用 CLI。 將"my-nest-app"變更為您想要的項目名稱。

nest new my-nest-app
nest new my-nest-app
SHELL

專案結構

以下是標準項目結構的簡要概述:

src/
├── app.controller.ts
├── app.controller.spec.ts
├── app.module.ts
├── app.service.ts
├── main.ts
test/
├── app.e2e-spec.ts
└── jest-e2e.json
  • app.controller.ts:包含應用程式的主控制器。
  • app.service.ts:包含應用程式的主要服務。
  • app.module.ts:應用程式的根模組。
  • main.ts:應用程式的入口點。

配置模組

若要管理配置,請安裝 @nestjs/config 軟體包。

npm install @nestjs/config
npm install @nestjs/config
SHELL

將配置模組新增至 app.module.ts 檔案。

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // Make the module global
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

若要存取環境變量,請使用配置服務。

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return `Hello World!`;
  }
}

NestJS Node.js (開發者使用方法):圖 2 - NestJS 專案輸出

入門

首先,我們將建立一個範例應用程序,該應用程式使用 NestJS 和IronPDF創建具有動態生成資料的 PDF 文件。 這是一本詳細的操作手冊,一步一步地指導您完成操作。

IronPDF是什麼?

為了簡化 PDF 的建立、編輯和管理過程,建立了一個名為IronPDF 的應用程式庫。 開發人員可以使用此程式新增頁首和浮水印、合併多個 PDF 文件、從 HTML 文件中提取文字和圖像,以及執行其他幾項任務。 由於 IronPDF 詳盡的文件和用戶友好的 API,開發人員可以輕鬆地自動建立高品質的 PDF 文件。 IronPDF具備增強文件工作流程所需的所有功能和功能,並在各種情況下提供卓越的使用者體驗,包括建立發票、報告和文件。

NestJS Node.js (開發者使用方法):圖 3 - IronPDF

IronPDF的特點

-將 HTML 轉換為 PDF:這是一個簡單且快速的過程,適用於任何類型的 HTML 文本,包括JavaScript和 CSS。

  • PDF 文件合併:將多個 PDF 文件合併為一個 PDF 文件,以簡化文件管理任務。 -文字和圖像提取:從 PDF 文件中提取文字和圖像,以便對其進行進一步的數據處理或分析。 -浮水印:您可以為 PDF 頁面新增文字或影像浮水印,以達到品牌推廣或安全目的。 -新增頁首和頁尾:您可以為 PDF 文件的頁首和頁尾新增個人化訊息或頁碼。

安裝IronPDF

使用 Node 套件管理器安裝所需的Node.js包,以啟用IronPDF功能。

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

將 NestJS 與IronPDF Node.js集成

將IronPDF與 NestJS 應用程式整合需要以下步驟:安裝IronPDF Node.js套件、建立用於管理 PDF 產生的服務以及建立用於公開 PDF 產生端點的控制器。

建立 PDF 服務

若要管理 PDF 的生成,請建立一個新服務。該服務將使用IronPDF將 HTML 資訊轉換為 PDF。

nest generate service pdf
nest generate service pdf
SHELL

在建立的 pdf.service.ts 檔案中套用 PDF 產生邏輯。

// src/pdf/pdf.service.ts
import { Injectable } from '@nestjs/common';
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

@Injectable()
export class PdfService {
  async generatePdf(htmlContent: string): Promise<Buffer> {
    const pdf = await document.fromHtml(htmlContent);
    const pdfBuffer = await pdf.saveAsBuffer();
    return pdfBuffer;
  }
}

建立 PDF 控制器

建立一個控制器,提供一個用於建立 PDF 的端點。

nest generate controller pdf
nest generate controller pdf
SHELL

在產生的 pdf.controller.ts 檔案中建立端點,該端點接受 HTML 輸入並輸出 PDF。

// src/pdf/pdf.controller.ts
import { Controller, Post, Body, Res } from '@nestjs/common';
import { PdfService } from './pdf.service';
import { Response } from 'express';

@Controller('pdf')
export class PdfController {
  constructor(private readonly pdfService: PdfService) {}

  @Post('generate')
  async generatePdf(@Body('html') htmlContent: string, @Res() res: Response) {
    const pdfBuffer = await this.pdfService.generatePdf(htmlContent);
    res.set({
      'Content-Type': 'application/pdf',
      'Content-Disposition': 'attachment; filename=generated.pdf',
      'Content-Length': pdfBuffer.length,
    });
    res.end(pdfBuffer);
  }
}

IronPDF用於將 HTML 內容轉換為 PDF 緩衝區,然後使用 PdfService 返回。 PdfService 使用IronPDF將 HTML 渲染為 PDF。 透過 NestJS 控制器可以輕鬆實現此整合。 下一步是定義一個 POST 端點 /generate,以接收來自客戶端的 HTML 內容。 我們使用IronPDF庫,在 API 內部將提供的 HTML 資料轉換為 PDF。

更準確地說,我們使用 pdf.saveAsBuffer() 建立 PDF 檔案的二進位緩衝區,並使用 IronPdf.fromHtml(htmlContent) 從 HTML 內容建立 PDF 物件。 之後,該緩衝區將以適當的 MIME 類型(application/pdf)傳回給客戶端。 伺服器監聽 3000 端口,並記錄 PDF 創建過程中遇到的任何問題。 對此,客戶端會收到 500 錯誤狀態碼。 這種設定有助於為 Web 應用程式建立發票、報告或其他文檔,因為它允許從 HTML 內容建立動態 PDF。

NestJS Node.js (開發者使用方法):圖 4 - PDF 輸出

結論

將IronPDF的先進 PDF 渲染功能與 NestJS 的可靠模組化設計相結合,為動態 PDF 創建提供了一個強大的解決方案。 開發人員可以透過建立高效且可擴展的伺服器端應用程式來解決各種業務目標,包括產生報告、發票和文檔,該應用程式可以按照上述步驟從 HTML 文字產生 PDF。

IronPDF 的功能得益於 NestJS 的模組化、裝飾器和依賴注入,從而建立出易於管理和測試的程式碼庫。 IronPDF負責處理 PDF 產生的繁瑣細節,開發者可以專注於業務邏輯,並透過這種組合輕鬆建立複雜的應用程式。

透過將IronPDF和Iron Software產品整合到您的企業應用程式開發堆疊中,我們可以確保為客戶和最終用戶提供功能豐富、優質的軟體解決方案。 此外,有了這個堅實的基礎,專案、後端系統和流程優化都會變得更加簡單。 IronSoftware和IronPDF皆以 $799 開頭。 這些技術擁有豐富的文件、活躍的線上開發者社群和定期更新,非常適合現代軟體開發專案。

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

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

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me