Altbilgi içeriğine atla
NODE YARDıM

NestJS Node.js (Geliştiriciler İçin Nasıl Çalışır)

Esnek ve ilerici bir Node.js çerçevesi olan NestJS, etkili ve ölçeklenebilir sunucu tarafı uygulamalar ile genişletilebilir frontend uygulamaları oluşturmak için tasarlanmıştır. Kod sürdürülebilirliğini ve geliştirici verimliliğini artırmak için, JavaScript'in statik tipli bir üst kümesi olan TypeScript'i kullanır. NestJS, işlevsel programlama (FP), nesne yönelimli programlama (OOP) ve fonksiyonel reaktif programlama (FRP) ilkelerini içeren dayanıklı ve modüler bir tasarıma sahiptir. NestJS, geliştirme sürecini kolaylaştırarak ve modülerlik, bağımlılık enjeksiyonu ve dekoratörlere büyük önem vererek son derece test edilebilir ve sürdürülebilir kod yazmayı teşvik eder.

Buna karşın, IronPDF, Node.js uygulamalarında PDF belgeleri oluşturmayı, düzenlemeyi ve onlarla çalışmayı kolaylaştırmak için tasarlanmış güçlü bir kütüphanedir. HTML dosyalarını PDF'ye dönüştürebilir, PDF'leri birleştirebilir, filigran ekleyebilir ve PDF'lerden metin ve resimleri çıkarabilir, birçok diğer işlevin yanı sıra. IronPDF, dinamik olarak PDF oluşturmak ve yönetmek için basit bir API sunar ve Node.js ölçeklenebilir sunucu tarafı uygulamalarla kolayca entegre olur.

Geliştiriciler, NestJS ve IronPDF'yi birleştirerek dinamik PDF oluşturma ve manipülasyonu gerektiren karmaşık ve karmaşık çevrimiçi uygulamalar oluşturabilirler. Raporlar, faturalar ve diğer belge odaklı işlemler üreten uygulamalar, bu entegrasyonu özellikle faydalı bulabilir. Geliştiriciler, IronPDF'nin güçlü PDF yetenekleri ve NestJS'nin düzenli ve modüler tasarımı sayesinde, yüksek performanslı uygulamalar ve gelişmiş belge işleme özelliklerine sahip harika projeler oluşturabilirler.

NestJS Nedir?

NestJS, Node.js sunucu tarafı uygulama geliştirme için açık kaynaklı, yenilikçi bir framework'tür ve etkili ve ölçeklenebilirdir. TypeScript ile yazılmış olup, geliştirici verimliliğini artırmak için Angular'dan etkilenen modüler bir mimariyi ve modern JavaScript özelliklerini kullanmaktadır. NestJS, iyi organize edilmiş kodu teşvik etmek için bağımlılık enjeksiyonu ve dekoratörler kullanır; bu da son derece test edilmiş ve bakımı kolay uygulamalarla sonuçlanır.

Geliştiriciler, HTTP, WebSockets ve gRPC de dahil olmak üzere birçok taşıma katmanını desteklediği için çerçeve ile geniş bir uygulama yelpazesi tasarlayabilir. Popüler Node.js framework'leri olan Express ve Fastify ile sorunsuz entegrasyon yoluyla esneklik ve sağlamlık sunar. NestJS, geliştiricilerin karmaşık uygulamalar oluşturmalarını kolaylaştırmak için veritabanları, kimlik doğrulama ve doğrulama için yerleşik destek sağlar.

NestJS, geniş kapsamlı Nest CLI, ayrıntılı dokümantasyonu ve canlı topluluğu sayesinde verimli serverless çözümler, mikro hizmetler ve kurumsal düzeyde uygulamalar geliştirmek için mükemmel bir araçtır. Modüler tasarımı, ölçeklenebilirlik ve bakım kolaylığı sağladığı için, çağdaş web geliştirme araçları için popüler bir seçenektir. Geliştiricilerin genişletilebilir ön uç uygulamaları oluşturmasını ve geliştirici verimliliğini artırmasını sağlar.

NestJS Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - NestJS

NestJS Özellikleri

TypeScript Desteği

NestJS'in yapımında, JavaScript'in statik tipli bir üst kümesi olan ve gelişmiş otomatik tamamlama, tip güvenliği ve modern dil özellikleri sunan TypeScript kullanılır. Bu, kodun sürdürülebilirliğini artırır ve derleme sırasında hataların tespit edilmesine yardımcı olur. NestJS, geliştiricilere daha fazla özgürlük sunarak varsayılan olarak JavaScript'in yanı sıra TypeScript'i de destekler.

Modüler Mimari

NestJS tarafından modül tabanlı kod organizasyonu teşvik edilmektedir. İlgili bileşenler, kontrolörler, sağlayıcılar ve hizmetler gibi tek bir modülde kapsüllendiğinde, kodu sürdürmek, ölçeklemek ve organize etmek daha kolaydır. Uygulamanın modülleri, başka alanlarda da kullanılabilir, bu da DRY (Kendini Tekrarlama) felsefesini teşvik eder.

Bağımlılık Enjeksiyonu

NestJS'in bağımlılıkları yönetmeyi kolaylaştıran ana özelliklerinden biri gelişmiş bir bağımlılık enjeksiyon sistemidir. Bağımlılıkları doğrudan kodlamak yerine enjekte ederek kullanmak suretiyle, NestJS gevşek bağlı ve test edilebilir bileşenler oluşturur. Bu stil, daha modüler kod ve geliştirilmiş ilgi ayrımını da mümkün kılar.

Dekoratörler

Dekoratörler, sınıfları ve üyelerini oluşturmak ve yapılandırmak için NestJS'de yoğun bir şekilde kullanılır. Uygulamanın her bileşeninin ne yaptığını ve nasıl davrandığını açıkça belirtmelerini sağlayarak @Controller(), @Get(), @Post(), @Injectable() gibi dekoratörlerin kullanımı, kodun okunabilirliğini ve ifadeliğini artırır.

Express ve Fastify ile Uyumluluk

Uyarlanabilirliği sayesinde, NestJS, geliştiricilere Fastify veya Express'i altındaki HTTP sunucusu olarak kullanma seçeneği sunar. Fastify daha iyi performans sağlarken, Express kullanıcı dostu ve verimli olmasıyla ünlüdür. Bu çok yönlülük sayesinde, geliştiriciler uygulamalarını benzersiz gereksinimlere göre uyarlayabilirler.

Ara Katman Yazılımı (Middleware)

NestJS, Express benzeri middleware işlevselliklerini destekler. İstekler rota işleyicilerine ulaşmadan önce, ara katman onları işleyebilir ve gövde ayrıştırma, kimlik doğrulama ve loglama gibi özellikler sunar. Bu, istekleri işlemek için yeniden kullanılabilir mantığın uygulanmasını kolaylaştırır.

İstisna Yönetimi

NestJS, programcıların özel istisna filtreleri oluşturmasına olanak tanıyan güçlü bir istisna yönetim sistemine sahiptir. Bu filtreler, istisnaları standart bir şekilde yakalayarak ve işleyerek uygulama genelinde hata yönetimini ve yanıt birliğini iyileştirebilir.

Boru Hatları ve Koruyucular

Boru Hatları: Veri dönüşümü ve doğrulaması, boru hatları kullanılarak gerçekleştirilir. Bunlar, kontrolör seviyesinde, rota işlemcisi seviyesinde veya genel olarak uygulanabilir. Doğrulama ve dönüşüm boruları yerleşik olarak gelir ve özel borular da oluşturulabilir.

Koruyucular: Yetkilendirme ve kimlik doğrulama mantığı, koruyucular tarafından uygulanır. Bir isteği onaylayıp onaylamamaya karar vermek için, kullanıcı rolleri veya izinleri doğrulama gibi belirli kuralları kullanırlar.

NestJs Oluşturma ve Yapılandırma

Bir NestJS projesi birkaç basit adımda oluşturulabilir ve yapılandırılabilir. İşte yeni bir proje oluşturmanıza başlamak için kapsamlı bir kullanım kılavuzu.

NestJS CLI'yi Kurun

NestJS CLI'yi global olarak kurmak için önce Yarn veya npm kullanın.

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

Yeni Bir Proje Oluşturun

Yeni bir NestJS projesi başlatmak için CLI kullanın. "my-nest-app" ifadesini istediğiniz proje adını olacak şekilde değiştirin.

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

Proje Yapısı

Bu, standart proje yapısının kısa bir özetidir:

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: Uygulamanın ana denetleyicisini içerir. app.service.ts: Uygulamanın ana hizmetini içerir.
  • app.module.ts: Uygulamanın kök modülü.
  • main.ts: Uygulamanın giriş noktası.

Yapılandırma Modülü

Yapılandırmaları yönetmek için @nestjs/config paketini kurun.

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

Yapılandırma modülünü app.module.ts dosyasına ekleyin.

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 {}

Ortam değişkenlerine erişmek için yapılandırma hizmetini kullanın.

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 (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - NestJS Projesi Çıktısı

Başlarken

Başlamak için, NestJS ve IronPDF kullanarak dinamik olarak üretilmiş verilerle bir PDF belgesi oluşturan bir örnek uygulama geliştireceğiz. Bu, adım adım ilerleyen ayrıntılı bir talimat kitabıdır.

IronPDF Nedir?

PDF'leri oluşturma, düzenleme ve yönetme sürecini daha basit hale getirmek için IronPDF adlı bir uygulama kütüphanesi oluşturuldu. Geliştiriciler bu program ile başlıklar ve filigranlar ekleyebilir, birden fazla PDF belgesini birleştirebilir, HTML belgelerinden metin ve görselleri çıkarabilir ve birkaç başka işlemi gerçekleştirebilirler. IronPDF'in kapsamlı belgeleri ve kullanıcı dostu API'ı sayesinde, geliştiriciler yüksek kaliteli PDF belgelerini kolayca otomatik olarak oluşturabilir. IronPDF, fatura, rapor ve dokümantasyon oluşturma dahil olmak üzere çeşitli bağlamlarda belge iş akışlarını geliştirmek ve mükemmel kullanıcı deneyimleri sağlamak için gereken tüm özellik ve işlevlere sahiptir.

NestJS Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - IronPDF

IronPDF Özellikleri

HTML'yi PDF'ye Dönüştürme: Bu, JavaScript ve CSS dahil olmak üzere her tür HTML metni ile çalışan kolay ve hızlı bir süreçtir. PDF dosya birleştirme: Belge yönetim görevlerini basitleştirmek için birden fazla PDF belgesini tek bir PDF dosyasında birleştirin.

  • Metin ve Görüntü Çıkarma: PDF dosyalarından metin ve görüntü çıkararak, bunlarla daha fazla veri işleme veya analiz yapılabilir.
  • Filigran Eklemek: Markalama veya güvenlik amaçları için PDF sayfalarına metin veya resim filigranları ekleyebilirsiniz.
  • Başlık ve Altbilgi Dahil Et: PDF belgelerinin başlık ve altbilgilerine kişiselleştirilmiş bir mesaj veya sayfa numaraları ekleyebilirsiniz.

IronPDF Kurulum

IronPDF işlevselliğini etkinleştirmek için gerekli Node.js paketlerini kurmak üzere node paket yöneticisini kullanın.

npm i @ironsoftware/ironpdf

NestJS ile IronPDF Node.js Entegrasyonu

IronPDF Node.js paketini yüklemek, PDF oluşturmayı yönetmek için bir servis oluşturmak ve PDF oluşturma için uç noktalar sunan bir denetleyici oluşturmak, NestJS uygulaması ile IronPDF entegrasyonunda yer alan adımlardır.

Bir PDF Servisi Oluşturun

PDF'lerin oluşturulmasını yönetmek için yeni bir servis oluşturun. Bu servis, HTML bilgilerini IronPDF kullanarak PDF'lere dönüştürecektir.

nest generate service pdf
nest generate service pdf
SHELL

Oluşturulan pdf.service.ts dosyasında PDF oluşturma mantığını uygulayın.

// 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 Kontrolcüsü Oluştur

PDF'lerin oluşturulması için bir uç nokta kullanılabilir yapmak adına bir denetleyici oluşturun.

nest generate controller pdf
nest generate controller pdf
SHELL

HTML girişi alıp bir PDF çıktısı veren bir uç noktayı sonuç pdf.controller.ts dosyasında oluşturun.

// 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 içeriğini bir PDF tamponuna dönüştürmek için kullanılır ve ardından PdfService kullanılarak geri döndürülür. PdfService, IronPDF kullanarak HTML'yi bir PDF olarak render eder. Bu entegrasyon, NestJS denetleyicisi aracılığıyla kolayca yönetilir. Bir sonraki adım, istemciden HTML içeriği almak için bir POST uç noktası, /generate, tanımlamaktır. IronPDF kütüphanesini kullanarak, sağlanan HTML verilerini API içinde PDF'e dönüştürüyoruz.

Daha kesin olmak gerekirse, PDF dosyasının bir ikili tamponunu pdf.saveAsBuffer() kullanarak oluşturur ve HTML içeriğinden bir PDF nesnesi IronPdf.fromHtml(htmlContent) kullanarak oluştururuz. Ardından bu tampon, uygun MIME türü (application/pdf) ile istemciye geri döndürülür. Sunucu, 3000 portunda dinler ve PDF oluşturma işlemi sırasında karşılaşılan herhangi bir sorunu kaydeder. Müşteri, hata durumunda 500 durum kodu alır. Bu kurulum, HTML içeriğinden dinamik PDF'ler oluşturulmasına izin verdiği için bir web uygulaması için faturalar, raporlar veya diğer belgeler oluştururken yardımcı olur.

NestJS Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - PDF Çıktısı

Sonuç

IronPDF'in gelişmiş PDF oluşturma yeteneklerini, NestJS'in güvenilir ve modüler tasarımıyla birleştirmek, dinamik PDF oluşturma için güçlü bir çözüm sunar. Yukarıda belirtilen prosedürleri takip ederek HTML metninden PDF oluşturabilen etkili ve ölçeklenebilir bir sunucu taraflı uygulama geliştirerek, geliştiriciler raporlar, faturalar ve dokümantasyon üretme gibi çeşitli iş hedeflerine ulaşabilirler.

IronPDF'nin özellikleri, NestJS'nin modülerliği, dekoratörleri ve bağımlılık enjeksiyonu ile güçlendirilir ve bu da yönetimi ve test edilmesi kolay bir kod tabanı oluşturur. IronPDF'nin PDF üretiminin karmaşıklıklarını ele alması sayesinde, bu kombinasyonla geliştiriciler iş mantığına odaklanabilir ve karmaşık uygulamaları kolaylıkla oluşturabilir.

IronPDF ve Iron Software ürünlerini kurumsal uygulama geliştirme yığınıza dâhil ederek, müşteriler ve son kullanıcılar için zengin özellikli ve premium yazılım çözümleri sağlayabiliriz. Ayrıca, bu sağlam temel ile projeler, backend sistemleri ve süreç optimizasyonu daha basit hale gelecektir. Iron Software ve IronPDF her biri $999 ile başlar. Bu teknolojilerin kapsamlı belgeleri, aktif çevrimiçi geliştirici topluluğu ve düzenli güncellemeleri, onları modern yazılım geliştirme projeleri için mükemmel bir seçenek hâline getirir.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimi alanında Lisans Derecesine sahip ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışıyor. Genç yaşlardan itibaren kodlamaya çekildi, bilgisayar bilimi hem gizemli hem de erişilebilir olarak görüldü ve bu özellik, yaratıcılık ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara