6. Uygulama #1 – Örnek Node.js Uygulaması

Arkadaşlar merhaba;

Bu paylaşımda sizlere basit bir Node.js uygulamasını anlatacağım. Öncelikle uygulamayı bu adresten bilgisayarınıza indiriyoruz. Bilgisayarımıza bu projeyi indirmek için Terminal’e

komutlarını teker teker yazıyoruz ve projemiz http://localhost:3005 adresinde çalışmaya başlıyor. Eğer tüm işlemleri terminal üzerinden gerçekleştirmek istiyorsanız;

Bu komutları terminale yazabilirsiniz. Şimdi yazdığımız kodu incelemeye başlayabiliriz.

app.js

İlk iki satırda projemizde kullanacağımız paketleri include ediyoruz. Bu paketleri daha önceden npm ile indiriyor olmanız gerek aksi halde hata ile karşılaşırsınız. Daha sonra app adında bir değişkene express’in constructor’ını atadık. Bunda sonra gelen kodlar ise projemiz için yapılan bazı ayarlamalar. app.set(name,value) şeklinde çalışır. İlk olarak projemizin 3005 portunda çalışacağını belirttik ardında projemizde kullanacağımız viewlerin hangi dizinde olduğunu belittik. Bir sonraki satıra geçmeden biraz view engine’lerden bahsetmek istiyorum. View engine’lerin görevi viewlerimizi render ettiğimizde HTML olarak çıktı vermesini sağlayan teknolojidir. Birçok view engine mevcut bunlar; HandleBars, Pug, EJS vs. hepsinin kendine göre avantajları dezavantajları mevcut projenizin amacına göre farklı engine’ler kullanabilirsiniz. Biz bu projede EJS’i kullandık bunuda view dizinini belirttiğimiz satırın altında belirttik. Sıradaki satır route dosyamızı çağırıyor ve ona parametre olarak app değişkenini veriyor. Biz app değişkenine express’in constructor’ını atamıştık. Yani route’larımız eğer bu sayfada bulunsa ve projemizde baya route mevcut olduğunu varsayarsak ortalık karışacaktır. Bu yüzden ayrı bir route dosyası açtık ve app değişkenini parametre olarak routes.js dosyasına gönderdik. En son yazdığımız kodda bir http server oluşturmasını istiyoruz ve portunu belirtiyoruz. Fonsiyonun içinde de terminalde projenin hangi port üzerinde çalıştığını yazdırıyoruz.

routes.js

routes.js dosyamızda sunucunun client’dan gelen hangi isteklere hangi cevabı vereceğini belirtiyoruz diyebiliriz. Şimdi biraz yukarıda bahsetmiştik routes.js i inculde etmiştik ve parametre olarak app atamıştık. Şimdi o app i kullanma zamanı. Bir fonksiyon tanımlıyoruz ve app değişkenimizi fonksiyonun içine dahil ediyoruz. Fonksiyonun içine girmeden module.exports kısmından bahsetmek istiyorum eğer bir dosyanız var ve bu dosyanıza dışarıdan bir fonsiyon çağıracasınız dışarıdan çalığırdınız bu fonksiyonu kullanabilmeniz için module.export’u kullanmanız gerek. Peki ne zaman gerek yok? Eğer bu fonksiyonu dışarıdan değil aynı sayfa içinde tanımlarsanız buna gerek kalmaz ama onlarca fonksiyonunuz olduğunu varsayarsak bu fonksiyonları başka bir sayfada tutmak daha iyi olabilir. Şimdi geldik app.get kısmına fonksiyon yapısı şöyle app.get(path, callback). Şunuda belirtmek isterim client’dan gelen GET isteklerine karşılık verir eğerki POST isteğine karşılık vermek istiyorsanız app.post kullanmanız gerek. İlk değer bu fonksiyonun hangi resource için çalışacağıdır. ‘/’ değerine karşılık olarak view dosyalarından index.ejs render edilip kullanıcının bu isteğine cevap olarak gönderilecektir. Yani htpp://localhost:3005/ olarak bir URL girer isek sunucu bize index’i render edip gönderecektir. Peki http://localhost:3005/iletisim şeklinde bir URL girersek ne olacak?Ekranda Cannot GET /iletisim şeklinde bir yazı göreceksiniz sunucu burda route dosyasına baktım /iletisim resource’una karşılık gelen bir şey bulamadım demek istiyor. Bu durumda /iletisim için bir fonksiyon daha yazmalısınız. Birazda callbackten bahsedelim callbackte fonksiyonunda yer alan req ve res nedir bunu açıklayalım. Client olarak sizin bir isteğiniz olduğunu varsayalım bir uygulamaya kayıt olmak istiyorsunuz formu doldurdunuz, submit ettiniz işte bu form verileri ve başka birçok veri request olarak sunucuya iletilir sunucu request paketinin içini açar alıcağını alır işleyecini işler tüm işlemler bittikten sonra ise size bir sonuç döndürür bunun adı ise response. Hangi isteklere karşılık vermek istiyorsanız bunları bu belgede yapabilirsiniz.