Bu ders için video bulunmamaktadır.
Ders İçeriği
Node.js Nedir?
Node.js, JavaScript'i tarayıcı dışında çalıştırmanızı sağlayan güçlü bir çalışma zamanı ortamıdır. Google'ın V8 JavaScript motoru üzerine inşa edilmiş olan Node.js, sunucu tarafı uygulamalar geliştirmek için kullanılır ve modern web geliştirmenin vazgeçilmez araçlarından biridir.
Geleneksel olarak JavaScript sadece web tarayıcılarında çalışabiliyordu. Node.js'in ortaya çıkışıyla birlikte, JavaScript artık sunucu tarafında da kullanılabilir hale geldi. Bu, geliştiricilerin hem ön yüz (frontend) hem de arka yüz (backend) geliştirme için aynı programlama dilini kullanabilmesi anlamına gelir.
Node.js'in Temel Özellikleri
Asenkron ve Olay Güdümlü: Node.js, asenkron programlama modeli kullanır. Bu, bir işlem tamamlanmasını beklemeden diğer işlemlerin devam edebilmesi anlamına gelir. Örneğin, bir dosya okuma işlemi sırasında program donmaz, diğer görevleri yerine getirmeye devam eder.
Tek İş Parçacıklı (Single-Threaded): Node.js tek bir ana iş parçacığı kullanır, ancak arka planda I/O işlemleri için iş parçacığı havuzu kullanır. Bu yaklaşım, bellek kullanımını optimize eder ve yüksek performans sağlar.
Hızlı ve Verimli: Google V8 motoru sayesinde JavaScript kodu makine koduna derlenir ve çok hızlı çalışır. Ayrıca, olay döngüsü (event loop) mekanizması sayesinde binlerce eşzamanlı bağlantıyı verimli bir şekilde yönetebilir.
Node.js Neden Kullanılır?
Node.js'in popüler olmasının birçok nedeni vardır. İlk olarak, JavaScript bilgisi olan geliştiriciler için öğrenme eğrisi çok düşüktür. Aynı dili hem frontend hem backend için kullanabilmek, geliştirme sürecini hızlandırır ve kod tutarlılığını artırır.
Gerçek zamanlı uygulamalar için Node.js mükemmel bir seçimdir. Sohbet uygulamaları, canlı güncellemeler, oyunlar ve işbirliği araçları gibi uygulamalar Node.js ile kolayca geliştirilebilir. WebSocket desteği ve olay tabanlı mimari, bu tür uygulamalar için ideal bir ortam sağlar.
Mikroservis mimarisi için de Node.js çok uygun bir seçimdir. Hafif ve hızlı olması, küçük ve bağımsız servisler oluşturmak için idealdir. Ayrıca, Docker gibi konteyner teknolojileriyle mükemmel uyum sağlar.
Node.js Kurulumu
Node.js kurulumu oldukça basittir ve birkaç farklı yöntemle yapılabilir. En yaygın yöntem, resmi Node.js web sitesinden indirip kurmaktır.
Resmi Web Sitesinden Kurulum
Node.js'i kurmak için nodejs.org adresine gidin. Ana sayfada iki farklı sürüm göreceksiniz:
LTS (Long Term Support): Uzun dönem destek sürümü, üretim ortamları için önerilir. Daha kararlı ve güvenilirdir.
Current: En son özellikler içeren sürüm, yeni özellikler denemek isteyenler için uygundur.
Başlangıç için LTS sürümünü seçmenizi öneririz. İndirme işlemi tamamlandıktan sonra, kurulum dosyasını çalıştırın ve kurulum sihirbazını takip edin.
Kurulum Doğrulama
Kurulum tamamlandıktan sonra, Node.js'in doğru şekilde kurulduğunu doğrulamak için terminal veya komut istemcisini açın ve aşağıdaki komutları çalıştırın:
node --version
npm --version
Bu komutlar, Node.js ve NPM (Node Package Manager) sürümlerini gösterecektir. Eğer sürüm numaraları görüyorsanız, kurulum başarılı demektir.
İlk Node.js Uygulamanız
Şimdi ilk Node.js uygulamanızı oluşturalım. Bu klasik "Hello World" örneği, Node.js'in temel çalışma prensiplerini anlamanıza yardımcı olacaktır.
Basit Console Uygulaması
İlk olarak, en basit Node.js uygulamasını oluşturalım. Bir metin editörü açın ve aşağıdaki kodu yazın:
// app.js
console.log('Merhaba, Node.js!');
console.log('İlk Node.js uygulamanız çalışıyor!');
// Basit bir hesaplama
const sayi1 = 10;
const sayi2 = 20;
const toplam = sayi1 + sayi2;
console.log(`${sayi1} + ${sayi2} = ${toplam}`);
Bu dosyayı app.js
olarak kaydedin. Ardından terminal veya komut istemcisinde dosyanın bulunduğu klasöre gidin ve şu komutu çalıştırın:
node app.js
Çıktı olarak şunları göreceksiniz:
Merhaba, Node.js!
İlk Node.js uygulamanız çalışıyor!
10 + 20 = 30
Basit HTTP Sunucusu
Şimdi daha ilginç bir örnek yapalım - basit bir web sunucusu oluşturalım. Node.js'in yerleşik http
modülünü kullanarak bir web sunucusu oluşturabiliriz:
// server.js
const http = require('http');
// Sunucu oluştur
const server = http.createServer((req, res) => {
// HTTP başlıklarını ayarla
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
// Yanıt gönder
res.end(`
<h1>Merhaba, Node.js Sunucusu!</h1>
<p>Bu sayfa Node.js ile oluşturulmuştur.</p>
<p>Şu anki zaman: ${new Date().toLocaleString('tr-TR')}</p>
`);
});
// Sunucuyu 3000 portunda başlat
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor`);
});
Bu dosyayı server.js
olarak kaydedin ve şu komutla çalıştırın:
node server.js
Artık tarayıcınızda http://localhost:3000
adresine giderek sunucunuzu görebilirsiniz!
Node.js Çalışma Zamanı Ortamı
Node.js'in nasıl çalıştığını anlamak için, temel bileşenlerini incelememiz gerekir. Node.js'in mimarisi, onu diğer sunucu teknolojilerinden farklı kılan özellikler içerir.
V8 JavaScript Motoru
Node.js'in kalbi Google V8 JavaScript motorudur. V8, JavaScript kodunu doğrudan makine koduna derler (Just-In-Time compilation). Bu, kodun çok hızlı çalışmasını sağlar. V8 aynı zamanda Google Chrome tarayıcısında da kullanılır.
V8'in önemli özellikleri şunlardır:
Hızlı Derleme: JavaScript kodu çalışma zamanında optimize edilmiş makine koduna derlenir.
Bellek Yönetimi: Otomatik çöp toplama (garbage collection) ile bellek yönetimi yapılır.
Sürekli Optimizasyon: Kod çalışırken sürekli olarak optimize edilir ve performans artırılır.
Olay Döngüsü (Event Loop)
Node.js'in en önemli özelliklerinden biri olay döngüsüdür. Bu mekanizma, Node.js'in asenkron ve non-blocking olmasını sağlar. Olay döngüsü şu şekilde çalışır:
Call Stack: Çalıştırılacak fonksiyonların tutulduğu yığın.
Callback Queue: Tamamlanan asenkron işlemlerin callback fonksiyonlarının bekletildiği kuyruk.
Event Loop: Call Stack boş olduğunda, Callback Queue'dan fonksiyonları alıp Call Stack'e yerleştiren mekanizma.
Bu sistem sayesinde Node.js, bir I/O işlemi beklerken diğer işlemleri gerçekleştirebilir. Örneğin, bir dosya okuma işlemi sırasında program donmaz, diğer istekleri işlemeye devam eder.
Libuv Kütüphanesi
Node.js, I/O işlemleri için libuv kütüphanesini kullanır. Libuv, farklı işletim sistemlerinde asenkron I/O işlemlerini yönetir. Bu kütüphane sayesinde Node.js:
Dosya sistemi işlemlerini asenkron olarak gerçekleştirir, ağ bağlantılarını verimli şekilde yönetir, zamanlayıcıları (timer) ve olayları işler.
NPM (Node Package Manager)
NPM, Node.js ile birlikte gelen paket yöneticisidir. JavaScript ekosisteminin en büyük yazılım kütüphanesi deposudur. NPM sayesinde binlerce hazır modül ve kütüphaneyi projelerinizde kullanabilirsiniz.
NPM'in Temel Komutları
NPM'i kullanmaya başlamak için temel komutları öğrenelim:
# Yeni bir proje başlatma
npm init
# Paket kurma
npm install paket-adi
# Global paket kurma
npm install -g paket-adi
# Geliştirme bağımlılığı kurma
npm install --save-dev paket-adi
# Kurulu paketleri listeleme
npm list
# Paket güncelleme
npm update
# Paket kaldırma
npm uninstall paket-adi
package.json Dosyası
package.json
dosyası, Node.js projelerinin kalbidir. Bu dosya projenizin meta verilerini, bağımlılıklarını ve scriptlerini içerir:
{
"name": "ilk-nodejs-projesi",
"version": "1.0.0",
"description": "İlk Node.js projemiz",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"keywords": ["nodejs", "javascript", "backend"],
"author": "Adınız",
"license": "MIT",
"dependencies": {
"express": "^4.18.0"
},
"devDependencies": {
"nodemon": "^2.0.0"
}
}