garen.yöndem launching ...3 ...2 ...1

Windows 10’da NodeJS Development Ortamı Kurmak

24. Ekim 2017 10:00by Garen Yöndem

Önceki yazıda NodeJS’in ne olduğuna ve Node’da basit bir I/O işleminin nasıl çalıştığına göz atmıştık. Daha detaylı makalelere geçmeden önce, Windows ortamında development yapabilmemiz için ihtiyacımız olacak araçları kurmaya başlayalım.


İlk olarak Node’un resmi web sayfası, nodejs.org adresinden NodeJS runtime paketini indirip bilgisayarımıza kurmalıyız. Bu pakete önceki yazıda incelediğimiz libuv gibi temel bileşenlere ek olarak, package management sistemi olan NPM (Node Package Manager) de dahil. Böylece .NET ortamındaki NuGet veya Python ortamındaki PyPi ile yapabildiğimiz gibi third party library’leri kolayca indirerek projelerimizde kullanabiliriz.


Node ekibi 2015 yılından itibaren LTS (Long Term Support) ve Current adından iki branch yürütmeye başladı. Current sürekli yeni feature’lar eklenen versiyon. LTS ise artık olgunlaşmış, sadece bakım güncellemeleri alan versiyon oldu. Gelecek makalelerde yapacağımız örneklerde her iki versiyonu da kullanacağız. Dolayısıyla iki branch’in de son versiyonlarını bilgisayarınıza indirmenizde fayda var.


Bilgisayarınıza birden çok Node versiyonu kurmaya çalıştığınızda kurulum sırasında bir önceki versiyonu kaldırmanızı isteyecektir. Bunun üstesinden gelebilmek için kurulumu NVM (Node Version Manager) kullanarak yapmalıyız. Orijinal versiyonu Linux ve macOS için yazılmış olan NVM’in çeşitli Windows portları bulunuyor. En popüler olanlardan ikisi nvm-windows ve nodist. Orjinal NVM’e benzerliğinden ve kullanım kolaylığından dolayı nvm-windows benim tavsiyem. Nvm-Windows’u GitHub sayfasından indirebilir veya choco install nvm komutuyla chocolatey aracılığıyla kurabilirsiniz. Bunlarla uğraşmak istemiyorum, ben zaten sık sık versiyon değiştirmiyorum diyenler editörlerden bahsedeceğimiz bölüme atlayabilirler. :)


Nvm-windows kurulumunu tamamladıktan sonra konsol’a nvm yazıp yardım dokümanına ulaşabiliriz.


Windows 10’da NodeJS Development Ortamı Kurmak - garen.yondem.com


Dilediğimiz Node versiyonunu indirmek için nvm install 6.10.2 gibi versiyon numarasını eklemeli veya var olan son versiyonu indirmek için nvm install latest komutunu çalıştırmalıyız. Versiyonları sırayla kurduktan sonra nvm list komutuyla bilgisayarımızda kurulu olan Node versiyonlarını listeleyebiliriz.


Windows 10’da NodeJS Development Ortamı Kurmak - garen.yondem.com


Listede yanında yıldız olan satır şu anda aktif olan Node versiyonunu belirtiyor. Aktif versiyonu değiştirmek için nvm use (versiyon numarası) komutunu çalıştırmanız yeterli.


Editör

Gerekli kurulumları tamamladıktan sonra sıra kodumuzu yazacağımız editörü kurmaya geldi. Bilgisayarınızda Visual Studio zaten kurulu ise Node.js Tools for Visual Studio’yu kurarak hızlıca çalışmaya başlayabilirsiniz. Eğer kullanımı daha basit bir editör arıyorsanız Visual Studio Code’u indirebilirsiniz. Serinin ilerleyen yazılarında örneklerimizi benim de aktif olarak kullandığım Visual Studio Code üzerinde yapacağımız için Visual Studio Code’u tercih etmenizi tavsiye ederim.


Windows 10’da NodeJS Development Ortamı Kurmak - garen.yondem.com


Editör tercihimizi ve kurulumumuzu da yaptıktan sonra NodeJS development ortamımız artık hazır. Sıradaki yazıda benzer ortamı macOS’te nasıl kurabileceğimize bakacağız. Görüşmek üzere!

NodeJS Nedir?

6. Ekim 2017 11:00by Garen Yöndem

Javascript dünyasının büyümesine son yıllarda en fazla katkısı olan şey nedir diye soracak olsaydık, hepimizin cevabı şüphesiz NodeJS olurdu. 2009 Yılında ilk versiyonu çıkan NodeJS ile Javascript sadece browser’larda kullanılan bir dil olmaktan kurtularak server-side kullanım alanı da kazandı.


NodeJS Nedir - garen.yondem.com


Peki nedir bu NodeJS? En yaygın tanımıyla, server-side kullanım için hazırlanmış single threaded Javascript runtime. Fakat bu tanımlamada eksikler var ve genellikle yanlış anlaşılmaya neden oluyor. NodeJS CPU kullanımı gerektiren işlemlerde tasarımından dolayı sadece tek thread kullanabiliyor. Yani yoğun CPU işlemleri yapmayı düşünenler için NodeJS doğru tercih değil. Ancak, database’den data okumak gibi I/O işlemlerinde her işlem için yeni bir thread açabiliyor. Bu ��zelliği de NodeJS’i günümüzde web/mobil uygulamalar için back-end olarak kullanılabilecek ideal seçenek yapıyor.


NodeJS Nedir - garen.yondem.com


NodeJS’e doğru parçalar bir araya getirilerek oluşturulmuş runtime paketi de diyebiliriz. Bu parçalar Chrome V8, libuv ve OpenSSL gibi açık kaynak kodlu library’ler. Gelin bu bileşenlere yakından bakalım.


Chrome V8, ilk olarak 2008’de Google Chrome browser’ında gördüğümüz (artık her yerde karşılaşabileceğimiz) Javascript compiler. Kodu interprete etmek yerinde JIT (Just-In-Time) compiler ile doğrudan machinde code’a çevirebiliyor. C++ ile yazılmış olması da pek çok farklı uygulamaya entegre edilebilir hale getirdi ve piyasadaki konumunu güçlendirdi. MongoDB, ChouchBase, Opera ve Electron bu uygulamalardan birkaçı.


Javascript kodunu parse etmek dışındaki çoğu aksiyon libuv ile gerçekleşiyor. Bunlara event loop ve I/O işlemleri de dahil. İlk versiyonlarında NodeJS çekirdek ekibi tarafından libeio (event loop) ve libev (thread pool) library’leri için wrapper olarak yazıldı. Ancak libev’in performans sorunlarından dolayı, Argon(4.x) versiyonundan itibaren libuv bu bileşenlerin yerini almış durumda.


NodeJS Nedir - garen.yondem.com


Konuyu daha fazla dağıtmadan yukarıdaki mimariye bakarak toparlayalım. NodeJS’e gelen istekler V8 tarafından parse edildikten sonra event queue’ya giriyor. Ardından, event loop CPU yoğunluğuna göre sırayla event’leri çalıştırmaya başlıyor. Eğer event’ler I/O gerektiren işlemler ise, event loop bunlar için ayrı worker thread’ler açtıktan sonra event queue’dan yeni event’ler almaya devam ediyor. Worker thread’de işi biten event ise callback’ini çağırarak tekrar event queue’ya giriyor ve bir sonraki cycle’ı beklemeye başlıyor. Olay bu kadar basit aslında :)


Hello World

Callback, NodeJS’in ayrılmaz parçası. Network veya database gibi harici kaynaklardan cevap beklediğimizde sonucu callback function’lar kullanarak yakalıyoruz. Örnek olarak diskten dosya okuyalım.


Okuyacağımız dosya JS script’iyle aynı klasörde. NodeJS’de dosya veya klasörlerle ilgili işler yapacağımızda fs module’ünü kullanabiliriz. Bu module’ün readFile ve writeFile adında iki popüler function’ı var. Her iki function da parametre olarak callback function alabiliyor. Okuma veya yazma işlemi worker thread’de tamamlandığında callback function’ı çağırarak sonuçları dönüyorlar. Bu sırada event loop boşta beklediği için farklı function’lar çağırmaya devam edebilirdik. Sıradaki işlem için async çalışan function’ın sonucunu beklememiz gerektiğinde ise işimizi callback function’da yapmalıyız.


Şimdi kodu çalıştırıp sonucunu kontrol edelim. NodeJS’i başlatmak için diğer script dillerinde olduğu gibi script’imizin bulunduğu dosyayı executable’a argument geçmeliyiz. Bunun için Visual Studio Code’un integrated terminal’ini kullanabiliriz. Integrated Terminal’e “View” menüsünden ulaşabilirsiniz.


NodeJS Nedir - garen.yondem.com


Script dosyasını yukarıdaki şekilde çalıştırdığımızda dosyanın içeriğini terminal’de görebiliriz.


NodeJS Nedir - garen.yondem.com


Sıradaki yazıda NodeJS için development ortamını nasıl kurabileceğimize bakacağız. Görüşmek üzere!