index.net.tr © all rights reserved

JavaScript ve Node.js Kullanarak Backend Geliştirme

JavaScript ve Node.js Kullanarak Backend Geliştirme

JavaScript uzun yıllar yalnızca istemci tarafında (frontend) kullanılan bir dilken, Node.js’in ortaya çıkışıyla birlikte sunucu tarafında da (backend) kullanılabilir hale gelmiştir. Bugün birçok modern web uygulaması, JavaScript ve Node.js ile tam yığın (full-stack) olarak geliştirilmektedir. Bu yaklaşım, aynı dilin hem istemci hem sunucu tarafında kullanılabilmesini sağlayarak geliştirme süreçlerini sadeleştirir ve verimliliği artırır.

Node.js Nedir?

Node.js, Chrome’un V8 JavaScript motoru üzerine inşa edilmiş, açık kaynaklı, olay güdümlü ve asenkron çalışan bir çalışma zamanıdır. Geliştiricilere, tarayıcı dışında da JavaScript yazabilme imkânı sunar. En önemli özelliklerinden biri, yüksek performanslı ve ölçeklenebilir ağ uygulamaları geliştirmeyi mümkün kılmasıdır.

Node.js’in Özellikleri:

  • Olay Tabanlı Mimarisi: I/O işlemleri sırasında engelleme (blocking) yapmaz.
  • Asenkron Programlama Desteği: callback, Promise, async/await yapılarıyla yüksek verimlilik sağlar.
  • Tek Thread Üzerinden Çalışır: Ancak event loop sayesinde binlerce işlemi aynı anda yönetebilir.
  • Modüler Yapı: NPM (Node Package Manager) ile binlerce açık kaynaklı modül kullanılır.

JavaScript ile Backend Geliştirmenin Temel Yapısı

JavaScript, Node.js ortamında çalışırken klasik backend dillerine benzer şekilde işlev görür. Örneğin:

  • HTTP sunucusu kurma
  • Veri tabanı bağlantısı
  • API uç noktaları tanımlama
  • Orta katman (middleware) işlemleri
  • Kimlik doğrulama, yetkilendirme gibi işlevler yapılabilir.

Basit HTTP Sunucusu Örneği

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Merhaba Backend!');
});

server.listen(3000, () => {
  console.log('Sunucu 3000 portunda çalışıyor.');
});

Popüler Node.js Framework’leri

1. Express.js

  • Minimal ve esnek bir web sunucusu çatısıdır.
  • RESTful API’ler için en yaygın kullanılan çözümdür.
  • Middleware yapısı ile özelleştirilebilir.
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Merhaba Dünya!');
});

app.listen(3000);

2. NestJS

  • TypeScript tabanlı, modüler ve kurumsal seviyede bir framework’tür.
  • MVC mimarisi, bağımlılık enjeksiyonu (DI) gibi yapılarla ölçeklenebilir projeler sağlar.

3. Fastify, Koa, Hapi

  • Daha hafif veya özelleştirilebilir alternatiflerdir.
  • Performans odaklı geliştirme yapmak isteyen projelerde tercih edilir.

Veri Tabanı Entegrasyonu

Node.js backend projelerinde SQL ve NoSQL veri tabanları ile bağlantı kolayca sağlanabilir.

  • MongoDB: Mongoose kütüphanesiyle nesne modelleme (ODM) yapılır.
  • MySQL / PostgreSQL: mysql2, pg, sequelize gibi modüller kullanılır.
  • Redis: Önbellekleme ve oturum yönetimi için ideal bir çözümdür.
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/veritabani', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

RESTful API Geliştirme

Express.js gibi framework’lerle API geliştirmek oldukça pratiktir:

app.get('/api/kullanicilar', (req, res) => {
  res.json([{ ad: 'Alper' }, { ad: 'Ayşe' }]);
});

JSON Web Token (JWT) ile Kimlik Doğrulama

Backend uygulamalarında kullanıcı doğrulaması için JWT sıkça tercih edilir:

const jwt = require('jsonwebtoken');
const token = jwt.sign({ kullaniciId: 123 }, 'gizliAnahtar', { expiresIn: '1h' });

Node.js ile Gerçek Zamanlı Uygulamalar

socket.io gibi kütüphaneler sayesinde sohbet uygulamaları, bildirim sistemleri gibi gerçek zamanlı uygulamalar geliştirilebilir:

const io = require('socket.io')(server);
io.on('connection', socket => {
  socket.emit('mesaj', 'Bağlantı kuruldu');
});

Anahtar Kelimeler: Node.js, JavaScript backend, Express.js, REST API, MongoDB, JWT, socket.io, NPM, NestJS, web sunucusu, veri tabanı bağlantısı

Uyarı: Node.js ile ölçeklenebilir ve güvenli backend mimarisi kurmak karmaşık sistemleri içerebilir. Yüksek trafiğe sahip projelerde, Node.js mimarisine hâkim uzman yazılım geliştiricilerden destek alınması önerilir.