1. Node.js’e Giriş
Node.js, Google’ın V8 JavaScript motoru üzerine inşa edilmiş, asenkron ve olay güdümlü bir çalışma modeline sahip açık kaynaklı bir JavaScript çalışma ortamıdır. Genellikle sunucu tarafında kullanılır ve yüksek performanslı, ölçeklenebilir web uygulamaları geliştirmek için idealdir.
1.1 Node.js’in Avantajları
• Asenkron ve Olay Güdümlü Yapı: Bloklamayan I/O modeli sayesinde yüksek performans sağlar.
• Tek Dil (JavaScript): Hem istemci hem de sunucu tarafında JavaScript kullanarak geliştirme yapmayı kolaylaştırır.
• Hızlı ve Hafif: Chrome V8 motoru üzerinde çalışır, bu da yüksek hız ve düşük bellek tüketimi sağlar.
• Geniş Paket Ekosistemi: npm (Node Package Manager) sayesinde binlerce hazır paketle geliştirme sürecini hızlandırır.
1.2 Node.js Nasıl Çalışır?
Node.js, gelen istekleri olay döngüsü (event loop) üzerinden yöneterek yüksek ölçeklenebilirlik sunar. Senkron dillerin aksine, işlemler tamamlanana kadar beklemek yerine, işleme devam eder ve tamamlandığında bir callback fonksiyonuyla sonuca ulaşır.
2. Node.js Kurulumu
Node.js’i sisteminize kurmak için resmi web sitesinden en güncel sürümü indirebilirsiniz.
2.1 Versiyon Kontrolü
Kurulumdan sonra terminal veya komut satırında aşağıdaki komutlarla versiyonları kontrol edebilirsiniz :
node -v // Node.js versiyonunu gösterir
npm -v // npm versiyonunu gösterir
3. Node.js ile İlk Uygulama
Basit bir HTTP sunucusu oluşturarak Node.js’in çalışma mantığını anlamaya başlayabiliriz :
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Merhaba, Node.js!');
});
server.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor...');
});
Bu kod, 3000 portunda çalışan bir HTTP sunucusu başlatır.
4. Node.js Modülleri
Node.js, modüler bir yapıya sahiptir ve farklı modüller kullanılarak işlevsellik eklenebilir.
4.1 Dahili Modüller
Node.js, yerleşik modüllerle gelir. Örneğin :
• fs (File System): Dosya işlemleri yapmak için kullanılır.
• path: Dosya ve dizin yollarını yönetmek için kullanılır.
• http: Web sunucusu oluşturmak için kullanılır.
Örnek kullanım :
const fs = require('fs');
fs.writeFileSync('dosya.txt', 'Merhaba, Node.js!');
4.2 Harici Modüller (npm Paketleri)
npm kullanarak yeni modüller yükleyebilirsiniz :
npm install express
5. Express.js ile Web Sunucusu Oluşturma
Express.js, Node.js için minimalist ve hızlı bir web framework’üdür. Basit bir API oluşturmak için şu kodu kullanabiliriz :
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Merhaba, Express!');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor...');
});
6. Node.js ile Veritabanı Kullanımı
Node.js, birçok veritabanı ile entegrasyon sağlayabilir. En yaygın kullanılan veritabanlarından bazıları şunlardır :
• MongoDB (NoSQL) – mongoose kütüphanesi ile kullanılır.
• PostgreSQL (SQL) – pg paketi ile entegrasyon yapılır.
• MySQL – mysql2 paketi ile kullanılabilir.
Örnek olarak, MongoDB bağlantısı :
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'Bağlantı hatası:'));
db.once('open', () => {
console.log('MongoDB bağlantısı başarılı!');
});
7. Node.js Performans Optimizasyonu
Node.js performansını artırmak için bazı optimizasyon teknikleri şunlardır :
• Asenkron İşlemleri Kullanmak: Callback, Promises veya Async/Await ile IO işlemlerini optimize etmek.
• Cluster Modülü Kullanımı: Çok çekirdekli sistemlerde performansı artırmak için kullanılabilir.
• Gzip Sıkıştırma: Response verilerini sıkıştırarak bant genişliği tasarrufu sağlamak.
Örnek olarak, cluster modülü ile çoklu işlem başlatmak :
const cluster = require('cluster');
const http = require('http');
const os = require('os');
if (cluster.isMaster) {
const cpuCount = os.cpus().length;
for (let i = 0; i < cpuCount; i++) {
cluster.fork();
}
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('Merhaba, Cluster!');
}).listen(3000);
}
8. Node.js Kullanım Alanları
Node.js, birçok farklı alanda kullanılabilir :
• RESTful API’ler ve Mikroservisler
• Gerçek Zamanlı Uygulamalar (Chat, WebSocket, IoT)
• Veri Akışı ve Streaming Uygulamaları
• Sunucusuz (Serverless) Uygulamalar
9. Kaynaklar
• Node.js Resmi Dokümantasyonu
• MDN Web Docs – Node.js
• Express.js Resmi Sitesi
• MongoDB Node.js Kütüphanesi
• Node.js Performance Best Practices