Menu

Node.js Nedir? JavaScript Runtime'ı Anlatıyoruz

Node.js, JavaScript'i tarayıcının dışında, sunucularda ve terminalde çalıştıran bir runtime'dır. Bir dil ya da framework değildir: V8, bir event loop ve dosyalar, ağ ve süreçler için API'lerden oluşur.

Bu sayfada çalıştırılabilir editörler var. Düzenle, çalıştır ve sonucu anında gör.

Node.js, JavaScript'i tarayıcının dışında çalıştıran bir runtime'dır: bir sunucuda, bir terminalde ya da komut satırı aracı olarak. Bir programlama dili değildir (dil JavaScript'tir) ve bir framework de değildir (Express, Node.js üzerinde çalışan bir framework'tür). JavaScript'i çalıştıran Google'ın V8 motorunu, bir event loop ve tarayıcılarda olmayan dosya, ağ ve süreç API'leriyle bir araya getirir.

Program dosyanın içeriğini, major sürümü (v24) ve window için undefined yazdırdı, çünkü Node.js'te sana window verecek bir web sayfası yok. fs ve process yalnızca Node.js'te var; aynı satırları bir tarayıcı sekmesinde çalıştırırsan ilk satır hata fırlatır.

Node.js bir framework mü, yoksa bir dil mi?

İkisi de değil. Dil JavaScript'tir. Node.js onu çalıştıran programdır, tıpkı JVM'in Java'yı ya da CPython'ın Python'ı çalıştırması gibi. Framework'ler bunun üstünde durur: Express, Fastify ve NestJS bir Node.js projesine kurduğun kütüphanelerdir. Node.js vs JavaScript sayfası ikisini ayrıntılı karşılaştırıyor.

Perde arkasında Node.js dört parçadan oluşur:

  • V8, Chrome'un JavaScript motoru. Kodunu makine koduna çevirip çalıştırır.
  • libuv, event loop'u sağlayan ve yavaş işleri (disk, ağ, timer'lar) arka planda yapıp sonucu callback'lerine geri veren bir C kütüphanesi.
  • Node'un kendi API'leri: dosyalar için fs, sunucular için http, path, process, crypto, events ve dahası; require ya da import ile, kurulum gerektirmeden kullanılır.
  • npm, Node.js ile birlikte gelen paket yöneticisi; sana tüm diller arasındaki en büyük paket deposuna erişim verir.

Node.js dosyası nasıl çalıştırılır

Node.js'i kendi sitesinden kur (LTS sürümünü seç), sonra terminalden kontrol et ve bir dosya çalıştır:

node --version     # prints v24.x.x or similar
node app.js        # runs app.js and exits when it has nothing left to do
node               # with no file: an interactive prompt (the REPL)

Bekleyen hiçbir şey kalmadığında program kendiliğinden biter: timer yok, açık sunucu yok, bekleyen dosya okuması yok. Bir script'in kapanıp bir web sunucusunun çalışmaya devam etmesinin nedeni budur.

Temel fikir: non-blocking I/O

Node.js yavaş işleri beklemez. Bir dosya okumasını ya da ağ isteğini başlatır, sonraki satırları çalıştırmaya devam eder ve sonuç hazır olunca fonksiyonunu çağırır.

readFile'dan sonraki iki console.log satırı önce çalıştı, dosyanın içeriği en son geldi. Tek bir Node.js sürecinin binlerce bağlantıya hizmet etmesi böyle olur: bir istek veritabanını beklerken event loop diğerlerini ilerletmeye devam eder.

Node.js ve tarayıcı

TarayıcıNode.js
Nerede çalışırBir web sayfasındaBir terminalde ya da sunucuda
Neleri varwindow, document, DOM, localStoragefs, process, http, Buffer, require
Global nesnewindow (ve globalThis)global (ve globalThis)
Diskteki dosyalarErişim yokKullanıcının izinleriyle tam erişim
setTimeout, console, fetch, URLVarVar

Node.js ne için kullanılır

  • Web sunucuları ve API'ler: REST ve GraphQL backend'leri, çoğu zaman Express ile.
  • Gerçek zamanlı uygulamalar: WebSocket üzerinden sohbet, canlı panolar ve çok oyunculu oyunlar; bunlarda aynı anda çok sayıda bağlantı açık kalır.
  • Komut satırı araçları: npm'in kendisi, Vite, ESLint, Prettier ve TypeScript derleyicisi Node.js üzerinde çalışır.
  • Script'ler ve otomasyon: dosyaları yeniden adlandırmak, API çağırmak, veri taşımak.

En yaygın kullanım bir HTTP sunucusudur ve ilki için yerleşik http modülü yeterlidir:

Sunucu GET /hello isteğine aldığı path ile cevap verdi. İstek çubuğundaki path'i /anything yapıp gönder: cevap da değişir, çünkü bu sunucu her URL'yi tek bir fonksiyonla karşılıyor.

Node.js ne zaman seçilmeli

İş çoğunlukla I/O beklemekse (istekler, veritabanları, dosyalar) ve frontend ile backend'de tek bir dil istiyorsan Node.js'i seç. Video encode etme ya da büyük sayısal hesaplar gibi uzun süren, CPU'yu yoran işler için daha zayıf bir seçimdir, çünkü uzun bir hesaplama tek JavaScript thread'ini bloklar ve diğer tüm istekler onu bekler.

Sıkça Sorulan Sorular

Node.js frontend mi, backend mi?

Çoğunlukla backend. Node.js ziyaretçinin tarayıcısında değil, bir sunucuda ya da kendi bilgisayarında çalışır. Frontend geliştiriciler de onu her gün kullanır, çünkü npm, Vite ve ESLint gibi araçlar birer Node.js programıdır.

Node.js'i kim ve ne zaman yarattı?

Ryan Dahl, Node.js'i 2009'da yayımladı. Bugün OpenJS Foundation tarafından geliştiriliyor; her altı ayda bir yeni major sürüm çıkıyor ve çift numaralı sürümler uzun süreli destek (LTS) alıyor.

Node.js'ten önce JavaScript bilmem gerekiyor mu?

Evet, en azından temellerini: değişkenler, fonksiyonlar, nesneler, diziler ve callback'ler ya da promise'ler. Node.js yeni bir sözdizimi değil, yeni API'ler ekler; dil hakkında öğrendiğin her şey doğrudan geçerlidir.

Node.js tek thread'li mi?

JavaScript kodun tek bir thread üzerinde çalışır. Node.js arka planda dosya sistemi işleri, DNS ve bazı crypto işlemleri için küçük bir thread pool kullanır, bu yüzden yavaş I/O beklerken kodunu bloklamaz.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

Başla