Przejdź do treści stopki
POMOC NODE

NestJS Node.js (jak to działa dla programistów)

NestJS to elastyczny i nowoczesny framework Node.js, przeznaczony do tworzenia wydajnych i skalowalnych aplikacji po stronie serwera oraz rozszerzalnych aplikacji frontendowych. Wykorzystuje TypeScript, statycznie typowany nadzbiór JavaScriptu, aby poprawić łatwość utrzymania kodu i wydajność programistów. NestJS charakteryzuje się odporną i modułową konstrukcją, która łączy w sobie zasady programowania funkcjonalnego (FP), programowania obiektowego (OOP) oraz funkcjonalnego programowania reaktywnego (FRP). NestJS promuje pisanie kodu, który łatwo poddaje się testowaniu i konserwacji, poprzez usprawnienie procesu tworzenia oprogramowania oraz położenie dużego nacisku na modułowość, wstrzykiwanie zależności i dekoratory.

Z kolei IronPDF to potężna biblioteka stworzona w celu ułatwienia tworzenia, edycji i pracy z dokumentami PDF w aplikacjach Node.js. Może konwertować HTML na PDF, łączyć pliki PDF, dodawać znaki wodne oraz wyodrębniać tekst i obrazy z plików PDF, a także wykonywać wiele innych funkcji. IronPDF oferuje proste API do dynamicznego tworzenia plików PDF i zarządzania nimi, a także z łatwością współpracuje ze skalowalnymi aplikacjami po stronie serwera opartymi na Node.js.

Programiści mogą tworzyć skomplikowane i złożone aplikacje internetowe, które wymagają dynamicznego tworzenia i edycji plików PDF, łącząc NestJS i IronPDF. Ta integracja może okazać się szczególnie pomocna w aplikacjach generujących raporty, faktury i innych operacjach opartych na dokumentach. Dzięki zaawansowanym funkcjom obsługi plików PDF oferowanym przez IronPDF oraz uporządkowanej i modułowej konstrukcji NestJS programiści mogą tworzyć wysokowydajne aplikacje i niesamowite projekty z wykorzystaniem zaawansowanych funkcji przetwarzania dokumentów.

Czym jest NestJS?

NestJS to otwarty, progresywny framework do tworzenia aplikacji po stronie serwera w Node.js, który jest wydajny i skalowalny. Jest napisany w TypeScript i wykorzystuje architekturę modułową inspirowaną Angularem, aby zwiększyć wydajność programistów dzięki nowoczesnym funkcjom JavaScript. NestJS wykorzystuje wstrzykiwanie zależności i dekoratory, aby zachęcić do tworzenia dobrze zorganizowanego kodu, co skutkuje aplikacjami poddanymi intensywnym testom i łatwymi w utrzymaniu.

Programiści mogą projektować szeroki zakres aplikacji przy użyciu tego frameworka, ponieważ obsługuje on wiele warstw transportowych, w tym HTTP, WebSockets i gRPC. Zapewnia wszechstronność i niezawodność dzięki płynnej integracji z popularnymi frameworkami Node.js, takimi jak Express i Fastify. NestJS ułatwia również programistom tworzenie skomplikowanych aplikacji, zapewniając wbudowaną obsługę baz danych, uwierzytelniania i walidacji.

NestJS to idealne narzędzie do tworzenia wydajnych rozwiązań bezserwerowych, mikrousług i aplikacji klasy Enterprise dzięki rozbudowanemu interfejsowi Nest CLI, obszernej dokumentacji i aktywnej społeczności. Jest to popularna opcja wśród współczesnych narzędzi do tworzenia stron internetowych ze względu na modułową konstrukcję, która gwarantuje skalowalność i łatwość konserwacji. Umożliwia to programistom tworzenie rozszerzalnych aplikacji front-endowych i zwiększenie wydajności pracy.

NestJS Node.js (Jak to działa dla programistów): Rysunek 1 – NestJS

Funkcje NestJS

Obsługa TypeScript

Do tworzenia NestJS wykorzystywany jest TypeScript, statycznie typowany nadzbiór języka JavaScript, który zapewnia zaawansowane autouzupełnianie, bezpieczeństwo typów oraz nowoczesne funkcje językowe. Zwiększa to łatwość utrzymania kodu i pomaga w wykrywaniu błędów podczas kompilacji. NestJS domyślnie obsługuje zarówno JavaScript, jak i TypeScript, dając programistom większą swobodę.

Architektura modułowa

NestJS zachęca do organizowania kodu w oparciu o moduły. Łatwiej jest utrzymywać, skalować i organizować kod, gdy powiązane komponenty, takie jak kontrolery, dostawcy i usługi, są zamknięte w jednym module. Moduły aplikacji mogą być wykorzystywane w innych obszarach, co sprzyja filozofii DRY (Don't Repeat Yourself).

Wstrzykiwanie zależności

Jedną z głównych funkcji NestJS, która ułatwia zarządzanie zależnościami, jest zaawansowany system wstrzykiwania zależności. Dzięki wykorzystaniu wstrzykiwania zależności zamiast ich sztywnego kodowania, NestJS tworzy luźno powiązane i testowalne komponenty. Ten styl umożliwia również tworzenie bardziej modułowego kodu i lepszy podział odpowiedzialności.

Dekoratory

W NestJS dekoratory są szeroko stosowane do tworzenia i konfigurowania klas oraz ich elementów składowych. Zastosowanie dekoratorów, takich jak @Controller(), @Get(), @Post(), @Injectable() i innych, poprawia czytelność i wyrazistość kodu, pokazując, co robi każdy element aplikacji i jak się zachowuje.

Kompatybilność z Express i Fastify

Dzięki swojej elastyczności NestJS daje programistom możliwość wyboru między Fastify a Express jako podstawowym serwerem HTTP. Podczas gdy Fastify zapewnia lepszą wydajność, Express słynie z przyjazności dla użytkownika i wydajności. Dzięki tej wszechstronności programiści mogą dostosowywać swoje aplikacje do unikalnych wymagań.

Oprogramowanie pośredniczące

Funkcje middleware'u podobne do Express są obsługiwane przez NestJS. Zanim żądania dotrą do modułów obsługi tras, mogą je przetworzyć programy pośredniczące, zapewniając funkcje takie jak parsowanie treści, uwierzytelnianie i rejestrowanie. Ułatwia to wdrażanie logiki wielokrotnego użytku do obsługi żądań.

Obsługa wyjątków

NestJS posiada rozbudowany system obsługi wyjątków, który pozwala programistom tworzyć unikalne filtry wyjątków. Filtry te mogą usprawnić zarządzanie błędami i ujednolicić reakcje w całej aplikacji poprzez wykrywanie i obsługę wyjątków w standardowy sposób.

Rury i osłony

Rury: Transformacja i walidacja danych odbywa się za pomocą rur. Można je zaimplementować na poziomie kontrolera, na poziomie obsługi trasy lub globalnie. Wbudowane są potoki walidacji i transformacji, a także można tworzyć potoki niestandardowe.

Guards: Logika autoryzacji i uwierzytelniania jest realizowana przez guards. Wykorzystują one określone reguły, takie jak weryfikacja ról lub uprawnień użytkowników, aby zdecydować, czy zatwierdzić żądanie.

Utwórz i skonfiguruj NestJs

Projekt NestJS można utworzyć i skonfigurować w kilku prostych krokach. Oto obszerny przewodnik, który pomoże Ci rozpocząć tworzenie nowego projektu.

Zainstaluj NestJS CLI

Najpierw zainstaluj globalnie NestJS CLI, używając Yarn lub npm.

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

Utwórz nowy projekt

Aby rozpocząć nowy projekt NestJS, użyj interfejsu CLI. Zmień "my-nest-app" na nazwę projektu, który chcesz.

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

Struktura projektu

Oto krótkie streszczenie standardowej struktury projektu:

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: Zawiera główny kontroler aplikacji.
  • app.service.ts: Zawiera główną usługę aplikacji.
  • app.module.ts: Moduł główny aplikacji.
  • main.ts: Punkt wejścia aplikacji.

Moduł konfiguracyjny

Aby zarządzać konfiguracjami, zainstaluj pakiet @nestjs/config.

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

Dodaj moduł konfiguracyjny do pliku 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 {}

Aby uzyskać dostęp do zmiennych środowiskowych, należy skorzystać z usługi konfiguracyjnej.

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 (Jak to działa dla programistów): Rysunek 2 – Wynik projektu NestJS

Pierwsze kroki

Na początek stworzymy przykładową aplikację, która generuje dokument PDF z danymi tworzonymi dynamicznie przy użyciu NestJS i IronPDF. Jest to szczegółowa instrukcja zawierająca opis krok po kroku.

Czym jest IronPDF?

Aby uprościć proces tworzenia, edycji i zarządzania plikami PDF, stworzono bibliotekę aplikacji znaną jako IronPDF. Za pomocą tego programu programiści mogą dodawać nagłówki i znaki wodne, łączyć wiele dokumentów PDF, wyodrębniać tekst i obrazy z dokumentów HTML oraz wykonywać szereg innych zadań. Dzięki obszernej dokumentacji IronPDF i przyjaznemu dla użytkownika API programiści mogą z łatwością automatycznie tworzyć wysokiej jakości dokumenty PDF. IronPDF posiada wszystkie cechy i funkcje niezbędne do usprawnienia przepływu pracy z dokumentami oraz zapewnienia doskonałych wrażeń użytkownika w różnych kontekstach, w tym podczas tworzenia faktur, raportów i dokumentacji.

NestJS Node.js (Jak to działa dla programistów): Rysunek 3 – IronPDF

Funkcje IronPDF

  • Konwersja HTML do PDF: Jest to łatwy i szybki proces, który działa z każdym rodzajem tekstu HTML, w tym z JavaScriptem i CSS.
  • Łączenie plików PDF: Połącz kilka dokumentów PDF w jeden plik PDF, aby uprościć zadania związane z zarządzaniem dokumentami.
  • Wyodrębnianie tekstu i obrazów: Wyodrębnianie tekstu i obrazów z plików PDF w celu dalszego przetwarzania lub analizy danych.
  • Znak wodny: Można nakładać tekstowe lub graficzne znaki wodne na strony PDF w celach brandingowych lub związanych z bezpieczeństwem.
  • Dodaj nagłówek i stopkę: Możesz dodać spersonalizowaną wiadomość lub numery stron do nagłówków i stopek dokumentów PDF.

Zainstaluj IronPDF

Użyj menedżera pakietów Node, aby zainstalować wymagane pakiety Node.js i włączyć funkcjonalność IronPDF.

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

Zintegruj NestJS z IronPDF Node.js

Instalacja pakietu IronPDF for Node.js, utworzenie usługi do zarządzania generowaniem plików PDF oraz utworzenie kontrolera w celu udostępnienia punktów końcowych do generowania plików PDF to kroki związane z integracją IronPDF z aplikacją NestJS.

Utwórz usługę PDF

Aby zarządzać generowaniem plików PDF, utwórz nową usługę. Usługa ta będzie konwertować informacje HTML na pliki PDF przy użyciu IronPDF.

nest generate service pdf
nest generate service pdf
SHELL

Zastosuj logikę generowania plików PDF w utworzonym pliku pdf.service.ts.

// 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;
  }
}

Utwórz kontroler PDF

Utwórz kontroler, aby udostępnić punkt końcowy do tworzenia plików PDF.

nest generate controller pdf
nest generate controller pdf
SHELL

Utwórz w wynikowym pliku pdf.controller.ts punkt końcowy, który przyjmuje dane wejściowe w formacie HTML i generuje plik 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 służy do przekształcania treści HTML w bufor PDF, który jest następnie zwracany za pomocą PdfService. PdfService wykorzystuje IronPDF do renderowania HTML jako PDF. Integracja ta jest łatwo obsługiwana za pośrednictwem kontrolera NestJS. Kolejnym krokiem jest zdefiniowanie punktu końcowego POST, /generate, w celu odebrania treści HTML od klienta. Korzystając z biblioteki IronPDF, konwertujemy dostarczone dane HTML na plik PDF w ramach API.

Mówiąc dokładniej, tworzymy bufor binarny pliku PDF za pomocą pdf.saveAsBuffer() i tworzymy obiekt PDF z treści HTML za pomocą IronPdf.fromHtml(htmlContent). Następnie bufor ten jest zwracany do klienta z odpowiednim typem MIME (application/pdf). Serwer nasłuchuje na porcie 3000 i rejestruje wszelkie problemy napotkane podczas procesu tworzenia pliku PDF. W odpowiedzi klient otrzymuje kod statusu 500 w przypadku błędu. Takie rozwiązanie jest pomocne podczas tworzenia faktur, raportów lub innych dokumentów dla aplikacji internetowej, ponieważ umożliwia tworzenie dynamicznych plików PDF na podstawie treści HTML.

NestJS Node.js (Jak to działa dla programistów): Rysunek 4 – Wynik w formacie PDF

Wnioski

Połączenie zaawansowanych możliwości renderowania plików PDF przez IronPDF z niezawodną, modułową konstrukcją NestJS zapewnia potężne rozwiązanie do dynamicznego tworzenia plików PDF. Programiści mogą realizować różne cele biznesowe, w tym tworzenie raportów, faktur i dokumentacji, poprzez stworzenie wydajnej i skalowalnej aplikacji po stronie serwera, która może generować pliki PDF z tekstu HTML, postępując zgodnie z procedurami wskazanymi powyżej.

Funkcje IronPDF są wzbogacone o modułowość, dekoratory i wstrzykiwanie zależności NestJS, co pozwala na tworzenie kodu, który jest łatwy w zarządzaniu i testowaniu. Dzięki temu, że IronPDF zajmuje się złożonymi aspektami tworzenia plików PDF, programiści mogą skupić się na logice biznesowej i z łatwością tworzyć skomplikowane aplikacje.

Włączając produkty IronPDF i Iron Software do stosu technologicznego służącego do tworzenia aplikacji korporacyjnych, możemy zapewnić bogate w funkcje, wysokiej jakości rozwiązania programowe dla klientów i użytkowników końcowych. Ponadto dzięki tym solidnym podstawom projekty, systemy backendowe i optymalizacja procesów staną się prostsze. Ceny produktów IronSoftware i IronPDF zaczynają się od $799 za sztukę. Obszerna dokumentacja tych technologii, aktywna społeczność programistów online oraz regularne aktualizacje sprawiają, że doskonale nadają się one do nowoczesnych projektów tworzenia oprogramowania.

Darrius Serrant
Full Stack Software Engineer (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie