Node.js
- Okunuşu
- nod cey-es
Kısaca
Node.js, JavaScript'i tarayıcı dışında çalıştıran, en çok web sunucuları, API'ler ve komut satırı araçları için kullanılan açık kaynaklı çalışma ortamıdır.
Node.js nedir?
Node.js, JavaScript'i yalnızca bir web tarayıcısının içinde değil, bir sunucuda ya da kendi bilgisayarınızda çalıştırmanızı sağlayan bir çalışma ortamıdır (runtime). Google Chrome'un JavaScript motoru olan V8 üzerine kuruludur ve ilk kez 2009'da Ryan Dahl tarafından yayımlanmıştır. Node.js bir programlama dili ya da framework değildir; JavaScript kodunuzu çalıştıran ve ona dosyalara, ağa ve işletim sistemine erişim veren programdır.
Node.js işleri tek iş parçacıklı (single-threaded) bir event loop ve engellemeyen (non-blocking) I/O ile yürütür (I/O, dosya okuma ya da veritabanıyla konuşma gibi girdi ve çıktı işlemleridir). Kodunuz yavaş bir işlem başlattığında Node.js beklemez; diğer işlere geçer ve sonuç hazır olduğunda bir callback çalıştırır ya da bir async fonksiyonu devam ettirir. Bu, API istekleri ya da WebSocket sohbetleri gibi aynı anda çok sayıda bağlantıyı yönetmede onu çok verimli kılar.
Bir siparişi alıp mutfağa ileten ve yemek pişerken mutfak kapısında beklemek yerine diğer masalara hizmet eden tek bir garson düşünün. Node.js, açık kaynaklı JavaScript paketlerinin en büyük kayıt defterinin arkasındaki paket yöneticisi olan npm ile birlikte gelir; Express, Fastify, NestJS ve Next.js gibi framework'lerin yanı sıra çoğu frontend derleme aracına da güç verir.
JavaScript kodunuz tek bir ana iş parçacığında çalıştığı için görüntü işleme ya da büyük hesaplamalar gibi işlemciyi yoğun kullanan işler, bitene kadar diğer tüm istekleri engelleyebilir. Bu tür işler genellikle worker thread'lere, ayrı süreçlere ya da başka servislere taşınır. Node.js ayrıca sıklıkla Deno ve Bun gibi daha yeni çalışma ortamlarıyla karşılaştırılır; bunlar büyük oranda aynı JavaScript'i çalıştırır ancak yerleşik araçlar ve varsayılanlar bakımından farklılaşır.
Önemli noktalar
- Node.js, JavaScript'i tarayıcının dışında, sunucularda ve geliştirici makinelerinde çalıştırır.
- Chrome'un V8 motoru üzerine kurulu bir çalışma ortamıdır; dil ya da framework değildir.
- Engellemeyen bir event loop, tek bir sürecin birçok eşzamanlı bağlantıyı yönetmesini sağlar.
- İşlemciyi yoğun kullanan işler event loop'u engelleyebilir ve başka bir yere taşınmalıdır.
- npm, devasa bir açık kaynak paket ekosistemine erişim sağlar.
Örnek
// server.mjs: a tiny JSON API with no external packages
import { createServer } from "node:http";
const server = createServer((req, res) => {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ message: "Hello from Node.js" }));
});
server.listen(3000, () => {
console.log("Listening on http://localhost:3000");
});
// Run it with: node server.mjsSık sorulan sorular
Node.js bir programlama dili midir?
Hayır. Programlama dili JavaScript'tir; Node.js ise onu çalıştıran bir çalışma ortamıdır. Node.js, tarayıcıların sunmadığı dosya, ağ ve süreç API'leri ekler.
Node.js frontend midir, backend mi?
Node.js sunucularda ve geliştirici makinelerinde çalışır, bu yüzden esas olarak backend kodu için kullanılır. Frontend geliştiricileri de derleme araçlarını, bundler'ları ve yerel geliştirme sunucularını çalıştırmak için her gün ona güvenir.
Node.js tek iş parçacıklı mıdır?
JavaScript kodunuz event loop tarafından yönetilen tek bir ana iş parçacığında çalışır, ancak Node.js bazı I/O görevleri için arka planda bir iş parçacığı havuzu kullanır. İşlemciyi yoğun kullanan işler için worker_threads modülüyle ek iş parçacıkları da oluşturabilirsiniz.
İlgili sayfalar
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- TypeScriptWeb Geliştirme, s. 51TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
- Async/AwaitProgramlamanın Temelleri, s. 2Async/await, asenkron kodu sıradan adım adım kod gibi okunur biçimde yazmayı sağlayan, her await'te bir promise ya da görev bitene dek duran sözdizimidir.
- CallbackProgramlamanın Temelleri, s. 5Callback, başka bir fonksiyona argüman olarak verilen ve o fonksiyonun bir iş bittiğinde ya da bir olay gerçekleştiğinde sonradan çağırdığı fonksiyondur.
- EşzamanlılıkProgramlamanın Temelleri, s. 19Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerleyebilme yeteneğidir; örneğin birçok kullanıcıya aynı anda hizmet vermek gibi.
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- npmWeb Geliştirme, s. 33npm, Node.js'in varsayılan paket yöneticisi ve dünyanın en büyük yazılım deposudur; bir projenin bağımlılıklarını indirir ve sürümlerini takip eder.
- ExpressBackend ve API'ler, s. 15Express, en yaygın Node.js web framework'üdür: yönlendirmeyi, istekleri ve yanıtları bir middleware fonksiyonları zinciriyle ele alan minimal bir katmandır.
- ES ModülleriWeb Geliştirme, s. 16ES modülleri, JavaScript'in yerleşik modül sistemidir: her dosya kendi kapsamını korur ve kodu diğer dosyalarla import ve export aracılığıyla paylaşır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin