Bvural41 1
Bvural41
Hikaye Ekle

[NODE JS] Node.js Nedir ve Nasıl Kurulur?

nodejs.png


[NODE JS] Node.js Nedir ve Nasıl Kurulur?​


Selamlar arkadaşlar. Bugün sizlerle Node.js dünyasına ilk adımı atacağız. Ben yaklaşık altı yıldır backend tarafında Node.js kullanıyorum ve ilk kurulum anından production ortamına kadar pek çok şey yaşadım. Bu yazıda hem Node.js'in ne olduğunu anlatacağım hem de kurulumdan ilk çalıştırmaya kadar her şeyi adım adım göstereceğim.

Node.js Tam Olarak Nedir?​


Node.js, Chrome'un V8 JavaScript motorunu kullanan, sunucu tarafında JavaScript çalıştırmamızı sağlayan bir runtime ortamıdır. Yani tarayıcı olmadan, doğrudan bilgisayarımızda JavaScript kodu çalıştırabiliyoruz. Ryan Dahl tarafından 2009 yılında geliştirildi ve o günden bu yana inanılmaz bir ekosistem oluştu.

Bir şeyi net söyleyeyim: Node.js bir framework değildir, bir kütüphane de değildir. Node.js bir runtime environment'tır. Bunu karıştıran çok kişi gördüm, özellikle yeni başlayanlar Express.js ile Node.js'i aynı şey sanıyor. Express bir framework, Node.js ise onun üzerinde çalıştığı ortam. Aradaki farkı anlamak çok önemli.

Node.js'in en güçlü yanlarından biri event-driven ve non-blocking I/O modelidir. Ne demek bu? Klasik sunucu tarafı dillerde bir dosya okuma işlemi yaparsanız, program o dosya okunana kadar bekler ve başka hiçbir iş yapmaz. Node.js'te ise dosya okuma işlemi başlatılır, arka planda devam eder ve bu sırada başka istekler karşılanabilir. Geçen sene bir projede bu farkı çok net gördüm, PHP ile yazılmış eski bir API'yi Node.js'e taşıdığımızda aynı sunucuda beş kat daha fazla eşzamanlı bağlantı kaldırabildik.

Single-thread çalışmasına rağmen bu kadar performanslı olmasının sebebi event loop mekanizmasıdır. Event loop, bekleyen callback'leri sırayla işler ve bu sayede binlerce eşzamanlı bağlantıyı tek bir thread üzerinde yönetebilir. Tabi bu demek değil ki CPU-intensive işler için ideal. Ağır hesaplama gerektiren işlerde worker threads veya farklı çözümler kullanmanız gerekir, ama tipik web uygulamaları için Node.js gerçekten mükemmel.

Hangi Durumlarda Node.js Kullanılır?​


Ben genelde şu senaryolarda Node.js tercih ediyorum: REST API geliştirme, real-time uygulamalar (chat, bildirim sistemleri), microservice mimarileri, CLI araçları ve build tool'ları. Netflix, PayPal, LinkedIn gibi devler de production ortamlarında Node.js kullanıyor. PayPal'ın Java'dan Node.js'e geçişte sayfa yüklenme süresini yüzde otuz beş azalttığını söylemesi benim için büyük bir referans olmuştu.

Ha bu arada, frontend ve backend'de aynı dili kullanmak da ciddi bir avantaj. Ekipteki geliştiriciler hem frontend hem backend tarafında çalışabiliyor. Geçen projemde bir full-stack developer tek başına hem React frontend'i hem Node.js backend'i rahatlıkla geliştirdi.

Node.js Kurulumu​


Kurulum aslında çok basit ama bazı detaylar var. nodejs.org adresine gittiğinizde iki versiyon göreceksiniz: LTS ve Current. Benim tavsiyem kesinlikle LTS versiyonunu kurmanız. LTS, Long Term Support demek, yani uzun süreli destek alıyor. Production ortamları için her zaman LTS tercih edin.

Windows kullanıyorsanız .msi dosyasını indirip next-next yaparak kurabilirsiniz. macOS için .pkg dosyası var. Linux kullanıcıları için ise paket yöneticisi üzerinden kurulum yapmak daha mantıklı.

JavaScript:
// Kurulumu doğrulamak için terminal komutları
// Windows: cmd veya PowerShell açın
// macOS/Linux: Terminal açın

// Node.js versiyonunu kontrol etme
// terminal: node --version
// Çıktı: v20.11.0 (veya kurduğunuz versiyon)

// npm versiyonunu kontrol etme
// terminal: npm --version
// Çıktı: 10.2.4 (veya kurulu versiyon)

// Basit bir test yapalım
// terminal: node -e "console.log('Node.js calisiyor!')"

// İlk JavaScript dosyamızı oluşturalım
// test.js dosyası oluşturun ve içine şunu yazın:

const platform = process.platform;
const nodeVersion = process.version;
const memoryUsage = process.memoryUsage();

console.log('=== Node.js Sistem Bilgileri ===');
console.log(`Platform: ${platform}`);
console.log(`Node.js Versiyon: ${nodeVersion}`);
console.log(`Bellek Kullanımı: ${JSON.stringify(memoryUsage, null, 2)}`);
console.log(`PID: ${process.pid}`);
console.log(`Çalışma Dizini: ${process.cwd()}`);
console.log(`Ortam Değişkenleri Sayısı: ${Object.keys(process.env).length}`);

// Basit bir zamanlayıcı ile async yapıyı test edelim
console.log('\nAsync test başlıyor...');

setTimeout(() => {
    console.log('2 saniye sonra çalıştım!');
}, 2000);

setInterval(() => {
    const now = new Date();
    console.log(`Zaman: ${now.toLocaleTimeString('tr-TR')}`);
}, 1000);

// 5 saniye sonra programı durduralım
setTimeout(() => {
    console.log('Program sonlandırılıyor...');
    process.exit(0);
}, 5000);

nvm ile Versiyon Yönetimi​


Bir şeyi daha söyleyeyim: eğer birden fazla projede çalışıyorsanız nvm (Node Version Manager) kullanmanızı şiddetle tavsiye ederim. Farklı projeler farklı Node.js versiyonları gerektirebilir. Mesela eski bir proje Node 16 isterken yeni bir proje Node 20 gerektirebilir. nvm ile versiyonlar arasında saniyeler içinde geçiş yapabilirsiniz.

JavaScript:
// nvm kullanım örnekleri (terminal komutları)
// nvm install 20       -> Node 20'nin son sürümünü kurar
// nvm install 18.19.0  -> Belirli bir sürümü kurar
// nvm use 20           -> Node 20'ye geçiş yapar
// nvm list             -> Kurulu sürümleri listeler
// nvm alias default 20 -> Varsayılan sürümü ayarlar

// .nvmrc dosyası oluşturarak proje bazlı versiyon belirleyebilirsiniz
// Proje kök dizininde .nvmrc dosyası:
// 20.11.0

// Sonra sadece "nvm use" yazarak o versiyona geçersiniz

// Node.js'in yeteneklerini keşfetmek için basit bir script
const os = require('os');

function sistemBilgisi() {
    const bilgi = {
        hostname: os.hostname(),
        tip: os.type(),
        platform: os.platform(),
        mimari: os.arch(),
        toplamBellek: `${(os.totalmem() / 1024 / 1024 / 1024).toFixed(2)} GB`,
        bosBellek: `${(os.freemem() / 1024 / 1024 / 1024).toFixed(2)} GB`,
        cpuCekirdek: os.cpus().length,
        cpuModel: os.cpus()[0].model,
        uptime: `${(os.uptime() / 3600).toFixed(2)} saat`,
        kullaniciDizini: os.homedir(),
        geciciDizin: os.tmpdir()
    };

    console.log('\n=== Sistem Bilgileri ===');
    Object.entries(bilgi).forEach(([anahtar, deger]) => {
        console.log(`${anahtar}: ${deger}`);
    });
}

sistemBilgisi();

Neyse, kurulumla ilgili bir sorun yaşarsanız büyük ihtimalle PATH ayarlarıyla ilgilidir. Windows'ta kurulum sırasında "Add to PATH" seçeneğinin işaretli olduğundan emin olun. Linux'ta ise shell profil dosyanıza (.bashrc, .zshrc) nvm scriptini eklemeyi unutmayın.

Benden söylemesi, Node.js öğrenme yolculuğuna başlıyorsanız sabırlı olun. Özellikle asenkron yapıyı anlamak başta biraz kafa karıştırıcı olabiliyor ama alışınca gerçekten çok mantıklı ve güçlü bir sistem olduğunu göreceksiniz. Kolay gelsin, sorularınız varsa yazın.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst