Node.js® Hakkında

Asenkron olaya dayalı bir JavaScript çalıştırma ortamı olarak, Node.js, ölçeklenebilir ağ uygulamaları oluşturmak için tasarlanmıştır. Aşağıdaki "merhaba dünya" örneğinde, birçok bağlantı aynı anda işlenebilir. Her bağlantıda geri çağrı tetiklenir, ancak yapılacak iş yoksa, Node.js uyur.

const { createServer } = require('node:http');

const hostname = '127.0.0.1';
const port = 3000;

const server = createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Bu, bugünün daha yaygın olan eş zamanlılık modeline karşı bir durumdur, bu modelde işletim sistemi iş parçacıkları kullanılır. İş parçacığı tabanlı ağ iletişimi nispeten verimsizdir ve çok zor kullanılır. Ayrıca, Node.js kullanıcıları, kilitlenme endişelerinden bağımsızdır, çünkü kilitler yoktur. Node.js'deki neredeyse hiçbir işlev doğrudan G/Ç yapmaz, bu nedenle işlem, Node.js standart kitaplığının senkron yöntemleri kullanılarak G/Ç gerçekleştirildiğinde dışında asla bloke olmaz. Hiçbir şey bloke olmadığı için, ölçeklenebilir sistemlerin Node.js'te geliştirilmesi çok mantıklıdır.

Eğer bu dilin bir kısmı size yabancı geliyorsa, Blokajlı ve Blokajlı Olmayan hakkında tam bir makale bulunmaktadır.


Node.js, Ruby'nin Event Machine ve Python'un Twisted gibi sistemlere benzer şekilde tasarlanmış ve etkilenmiştir. Node.js, olay modelini biraz daha ileri götürür. Olay döngüsünü bir kütüphane olarak değil, bir çalışma zamanı yapısı olarak sunar. Diğer sistemlerde, olay döngüsünü başlatmak için her zaman bir blokajlı çağrı vardır. Tipik olarak, davranış, betiğin başında geri çağrılar aracılığıyla tanımlanır ve sonunda EventMachine::run() gibi bir blokajlı çağrı ile bir sunucu başlatılır. Node.js'te böyle bir olay-döngüsünü-başlatma çağrısı yoktur. Node.js, girdi betiğini yürüttükten sonra basitçe olay döngüsüne girer. Node.js, yapılacak başka geri çağrı kalmadığında olay döngüsünden çıkar. Bu davranış, tarayıcı JavaScript'iyle benzerdir - olay döngüsü kullanıcıdan gizlenir.

HTTP, Node.js'de birinci sınıf bir vatandaştır ve akış ve düşük gecikme düşünülerek tasarlanmıştır. Bu, Node.js'in bir web kitaplığının veya çerçevesinin temeli için uygun olmasını sağlar.

Node.js'in iş parçacıkları olmadan tasarlanmış olması, çevrenizdeki birden fazla çekirdeği kullanamayacağınız anlamına gelmez. Çocuk süreçler, [child_process.fork()][] API'si kullanılarak oluşturulabilir ve iletişim kurmak için tasarlanmıştır. Aynı arayüz üzerine inşa edilmiş olan cluster modülü, çekirdekleriniz üzerinde yük dengelemeyi etkinleştirmek için süreçler arasında soket paylaşmanıza izin verir.

Okuma Süresi
2 min read
Katkıda bulunun
Edit this page