Node.js ve Npm nedir? Ne işe yarar?

İster front-end, isterseniz de back-end geliştirme yapıyor olun, er yada geç node.js sizi bulacaktır :) Sıklıkla duyduğumuz Node.js ve Npm kavramları nedir? ne işe yarar? bunlara kısaca değinelim.

erhan kocabuga
3 min readDec 3, 2018

--

Günümüz teknolojisiyle ve kullanım alanlarının genişlemesiyle JavaScript en çok tercih edilen yazılım dili oldu. Stack Overflow’un gelenekselleşen geliştirici anketlerinde (Stack Overflow Developer Survey 2018) üst üste altı yıldır, en yaygın kullanılan programlama dili seçilmesi bir tesadüf olmasa gerek.

Öncelerde web sayfalarında sadece kullanıcı etkileşimleri (tıklama, uyarı mesajları, pop-up’lar vb.) oluşturduğunu bildiğimiz yahut o amaçla kullanılmış kodlar, artık başlı başına bir uygulama olabilmekte. Artık tamamen JavaScript kullanarak oldukça performanslı, real-time ve ölçeklenebilir uygulamalar yapabilmek mümkün. İşte tüm bunları sağlayan platform ise şimdi bahsetmeye çalışacağım Node.js’tir.

Node.js Nedir?

Node.js, JavaScript tabanlı sunucu tarafında koşan, non-blocking I/O modelini kullanabilen bir platformdur. Altyapısını Google’ın V8 JavaScript Engine’ninden alması yüksek performanslarda çalışabilmesini sağlar.

Node.js, yüksek performans ve hız sunduğu için anlık mesajlaşma, chat, gerçek zamanlı uygulamalar veya ağır yük altında çalışan uygulamalar yapmak için biçilmiş kaftandır. Windows, Linux ve OS X işletim sistemlerinde sorunsuz bir şekilde çalışabilir.

Blocking ve Non-Blocking kavramları

Node.js non-blocking I/O modelini kullanıyor dedik, biraz bu konuya eğilmekte fayda var.

Sadece JavaScript kodu çalıştırdığımızda dahi kod içerisindeki JavaScript dışı operasyonlar, değişken süreli olmak üzere beklemelere sebep olabilir. JavaScript, çalışmaya devam edebilmek için bu operasyonların tamamlanmasını bekler. İşte bu bekleme süresine Blocking denir. Blocking işlemi oluştuğunda başka bir kod çalışmadığı için bu pek tabii istenmeyen bir durumdur. Bunu, bilgisayarımızda bir işlem yaparken ekranların donmasına benzetebiliriz.

Non-Blocking durumu ise, JavaScript dışı operasyonlar çalıştırıldığında tamamlanmasını beklemeden kodların sıradan işletilmesi durumudur. Node.js içerisindeki standart I/O metodları non-blocking olarak çalışır ve callback fonksiyonlarını kabul eder. Bazı blocking metodları da paket içerisinde mevcut, bunların sonunda Sync ifadesi yer alıyor.

Hemen bir örnekleme yapalım;

Blocking

Aşağıdaki kod bloğu package.json dosyasını okur ve içeriğini konsola yazdırır. Sonrasında ise “Merhaba!” mesajını görürüz.

Test ettiğinizde kodun çalışmasında bir sıkıntı görünmeyecektir. Package.json dosyası boyutu oldukça düşük, bunun yerine büyük bir dosya geldiğinde, “Merhaba!” yazısını görebilmek için dosyanın tamamen okunmasını ve konsola yazdırılmasını beklememiz gerekecektir. Bu bekleme süresi neden Blocking denildiğini açıklamaktadır.

Non-Blocking

Aşağıdaki örnek kodda ise `fs.readFile` ile package.json dosyası okunduğu ve dosya içeriğinin konsola yazdırıldığını görüyoruz. Bu kodu çalıştırdığımızda göreceğimiz ilk mesaj “Merhaba!” olacaktır. Bunun sebebi dosya okuma işleminin asenkron olarak yapılmasıdır.

`fs.readFile` çalıştırılıyor, tamamlanması beklemeden kod işletilmeye devam ediliyor. Bu da kodlarımızda bir beklemeye sebebiyet vermeden hızlı bir şekilde kodların işlenmesi anlamına geliyor.

Npm Nedir?

Node.js denidiğinde Npm’den bahsetmemek olmaz. Npm, Node.js projelerinde kullanılmak üzere içerisinde bir çok modül barındıran bir depo gibi düşünebiliriz. Bu modüller open-source geliştiricileri tarafından yazılarak npmjs.com üzerine yüklenmektedir.

Npm aynı zamanda Node.js ile beraber gelen bir konsol uygulamasıdır. Uygulama geliştirme süreçlerinizi hızlandırmak, ek fonksiyonaliteler eklemek için ihtiyaç duyduğunuz paketleri npm aracılığı ile projelerinize ekleyebilirsiniz.

Npm Paketi Yükleme

Paket yükleme işlemi çok basittir, aşağıdaki gibi paket ismini yazdığımızda proje dosyamıza bir dependency olarak eklenecektir.

npm install <paket-ismi>

Bazı paket dökümantasyonlarında npm install komutunun yanında — save veya — save-dev ifadelerini görürsünüz. Bunların farkları şu şekildedir;

  • — save komutu ilgili paketi, proje klasöründe yer alan package.json dosyasındaki dependencies kırılımına ekler. Bu işlem, projenin canlı ortamda çalışması için bu pakete ihtiyaç duyulduğunu gösterir.
  • — save-dev ise paket bilgilerini, package.json dosyasında devDependencies kırılıma eklemektedir. Bunun anlamı sadece proje geliştirme süreçlerinde bu pakete ihtiyaç duymasıdır. Örneğin test işlemleri, bunle ve minify işlemleri gibi.

Node.js ve Npm hakkında özet bir bilgi aldıktan sonra Node.js kurulumu ve örnek bir node.js projesini beraber kodluyor olacağız. Sonraki yazımda buna yer vereceğim.

Bu yazının orjinali https://erhankocabuga.com/node-js-ve-npm-nedir-ne-ise-yarar adresinde yayınlanmıştır.

--

--