Node.js Nedir?

KOGLAK
3 min readJul 6, 2020

Bu yazımda Node.js’ten bahsedeceğim ve kendi aldığım notları sizinle paylaşacağım.

Node.js javascript dili ile server tarafı uygulamaları yapılabilen (backend) bir platformdur. En önemli özelliklerinden biri asekron olmasıdır. Yani komutlar ardışık değil, asekron olarak işlenir. Bu durum hız kazandırsa da ardışık programlamadan geçen yazılımcılar için kafa karıştırıcıdır.

Node.js’in sitesinden indirilerek kurulum yapılır. Kodunuzu yazmak için visual studio code’u da indirmenizi tavsiye ederim.

Ardından masa üstünde boş bir klasör oluşturup, bunu visual studio code’ta açmalısınız. Daha sonra ise visual studio code’ta yeni dosyadan app.js isimli bir dosya oluşturmalısınız.

Şimdi Node.js ile basit bir http istek uygulaması yapacağız. HTTP protokolü ağ üzerinden web sayfalarının görüntülenmesini sağlayan protokoldür ve istemci (PC) ile sunucu (server) arasındaki alışveriş kurallarını belirler. İstemci sunucuya bir istek gönderir. Bu istek Internet Explorer, Google Chrome veya Mozilla Firefox gibi web browser’lar aracılığıyla iletilir. Sunucu bu isteği alır ve Apache veya IIS gibi web sunucu programları aracılığıyla cevap verir.

app.js isimli dosyamıza aşağıdaki kodu yazarak http değişkeni oluşturularak, http modülü bu değişkene require komutu ile yüklüyoruz.

var http=require(‘http’);

Yine aynı mantıkla filesystem kütüphanesini de yüklüyoruz. File System modülü uygulama sunucusu üzerindeki dosyaları okumaya ve bunlar üzerinde kimi işlemler yapmaya yarayan bir modül.

var fs=require(‘fs’);

Ardından aynı mantıkla server’ımızı oluşturuyoruz. Burada server oluştururken kullanıcının isteğini alıp, cevap verecek bir fonksiyon oluşturuyoruz ve bu fonksiyonu parametre olarak veriyoruz.

Fonksiyonun içerisinde 2 parametre var. Biri req yani kullanıcı isteği(request), diğeri ise res yani cevap(response)tır.

var server=http.createServer(function(req,res){

}

Şimdi server’ımızı oluşturduk. Bu server içerisinde kullanıcı isteklerini alıp,onlara cevap vereceğiz.

Aşağıda kullanıcı istek de bulunuyor. req.url yani url sadece “/” şeklinde kullanıcı isteği geliyor. Bu durumda dosya okunmasını istiyoruz. Okunan dosya bizim index.html isimli dosyamız. Okuma işlemi bittikten sonra ise callback fonksiyonumuzu çağırıyoruz. (function(err,data)).

Callback fonksiyonu iki parametre alıyor biri error(hata), ikincisi ise data yani okunan dosyadır.

Node.js asekron bir yapı olduğu için(satırları sıra ile okumaz) okuma işlemi biter bitmez alt satıra geçebilirdi. Bunu engellemek için callback fonksiyonu çağırıyoruz ve okuma bitince bu fonksiyona geç komutunu veriyoruz.

Böylece kullanıcı isteği “/” ise index.html dosyasını oku ve bu dosyayı cevap olarak (res.write) yazdır dedik. Ardından da ekrana bitiş olarak (res.end) bitti yazdırmasını istedik.

var server=http.createServer(function(req,res){

if(req.url==’/’){
fs.readFile(‘index.html’, function(err,data){
res.write(data);
res.end(‘bitti’);})
}
}

Son olarak aşağıdaki kodu ekleyerek hangi porta istekde bulunacağımızı belirtiyoruz.

server.listen(8000);

Proje içerisinde index.html isimli dosya oluşturup, HTML ile aşağıdaki gibi düzenleyebilirsiniz.

Artık sonucu gözlemlemek için terminale npm start yazmamız gerekiyor. Ya da benim yaptığım gibi nodemon paketini indirebilirsiniz.

Nodemon her değişiklik için sürekli node.exe’yi kapatıp açmamızı engelleyen bir modül, sayfayı yeniledikçe değişiklikler ekrana gelir.Sadece terminalinize npm install -g nodemon yazmanız yeterli, bu şekilde indirebilirsiniz. “-g” global olarak indirmenizi sağlar yani diğer projelerinizde de nodemon’u kullanabilirsiniz.

Tarayıcımızda localhost:8000 yazdığımız da ise artık sayfamızı görebiliriz.

app.js’de server’ımızda kullanıcı ‘/login’ talebinde bulunsaydı başka bir sayfayı örneğin login.html’i aynı mantıkla yükleyebilirdik.

Bu oldukça ilkel ancak anlamak için önemli bir başlangıçtı. Bir sonraki yazımda bu kodu nasıl daha okunaklı hale getirebileceğimizden ve express.js modülünden bahsedeceğim.

Esen kalın.

KAYNAKÇA:

(1) https://www.hosting.com.tr/bilgi-bankasi/http-nedir/

(2) https://www.youtube.com/watch?v=gaZruB6S6Yg&list=PLDUOF2Be-kzm_8UxwfY0pKQqwPR5TOs0X&index=2

(3) https://medium.com/batech/pop%C3%BCler-10-nodejs-paketi-6b1afe21a01c

--

--