Sitemap

Node.js -Express

5 min readAug 6, 2024

--

Arkadaşlar sizlere express modulunden bahsetmeye çalışacağım.Tabi öncelikle express’e geçmeden önce express’e neden ihtiyaç duyduğumuzdan bahsedeceğim biraz.Dikkat ediyorsanız şu anki server’ımız oldukça ilkel.Çok basit isteklere cevap verebiliyoruz ve çok basit işlemler yapıyoruz sadece index.html’i döndürüyoruz veya login.html’i.Ve dikkat ediyorsanız kullanıcının her isteğine göre ayrı ayrı tek tek uğraşmamız gerekiyor.Bakın şimdi şu görmüş olduğunuz işlevi ayrı bir fonksiyon olarak tanımlayacağım.

Press enter or click to view image in full size

Fonksiyonlar ayrı bir değişken olarak tanımlanabiliyor javascript de.

Press enter or click to view image in full size

Burda da artık tek yapmam gereken şey homeController’ı çağırmak.

Press enter or click to view image in full size

Aynı işlemi diğeri için de yapalım.

Press enter or click to view image in full size
Press enter or click to view image in full size

Gördüğünüz gibi çağrılara karşılık veren fonksiyonlar tasarladım.Bu işlemi daha kolay hale getirebiliriz.Ama dikkat ediyorsanız bütün yük benim üstüme düşüyor.Bakın istersek bu işlevi çok daha kullanışlı bir hale getirebiliriz.

Bu fonksiyonları yönlendirici adında bir obje oluşturacağım.

Press enter or click to view image in full size

Her dışarıdan girilen url’lere karşılık dışarıdan bir controllerlardan birisini ekleyeceğim.

Eğer ki / girerse yani homePage’e erişmeye çalışırsa buraya bir fonksiyon atayacağım.Fonksiyonlarda bir obje unutmayın.

Press enter or click to view image in full size

login içinde aynı şey geçerli.

Press enter or click to view image in full size
Press enter or click to view image in full size

Tabi bunu bu şekilde çalıştırırsam hata verecek.Neden? req.url’in yönlendirici içerisinde olup olmadığını bilmiyoruz.

Benim şunu yapmam gerekiyor:

Press enter or click to view image in full size

Burada istenen parametre acaba yönlendirici içerisinde var mı?

(if(req.url in yonlendirici))

Eğer ki varsa çağır.

Bakın şu an hiçbir sorun çıkartmayacak.

Press enter or click to view image in full size

Umarım çok karışık olmamıştır.Ne yaptım?

İlk başta kullanıcının web adresinde kullandığı adrese karşılık bir controller fonksiyon yaptım.Daha sonra bunları bir obje olarak tutuyum dedim.yonlendirici adında.

Sonra bu yonlendiricinin her bir parametresine karşılık bir fonksiyon tanımladım.

Sonra createServer içerisinde de istekler geliyor.Web tarayıcısından.Önce url’i kontrol ediyorum acaba getirilen parametre bu anahtarlar içerisinde var mı?

Eğer yoksa zaten çağırma işlemi yapmayacak.Eğer varsa içeriye girecek çağrıyı gerçekleştirecek.

Express’in amacı aslında şu an buraki işleri halletmeye çalışıyor.

Komplex işlemler görüyorsunuz ben bunu yazdıkça daha da büyüyecek.Şimdi isterseniz gelin bu işlemleri express de yapmaya çalışalım.

Get Merve Nur Çifci’s stories in your inbox

Join Medium for free to get updates from this writer.

Uygulamanızda express’in kurulu olduğunu düşünüyorum.

Projeme express’i ekleyeceğim.

Press enter or click to view image in full size

Daha sonra express nesnemi oluşturacağım.

Nasıl arkadaşlar burada yönlendiriciler için url parametreleri ,o parametreye karşılık gelen controllerları yazdıysam aynı işlemi express de de yapacağım.Tabi burada dikkat etmemiz gerekn bir şey var.Bir kullanıcı olarak bir web tarayıcısından birçok farklı istekte bulunabilir.HTTP istekleri birden fazla.Get bu isteklerin en temeli.Sadece bir dosya istiyorsunuz.Bir istekte bulunuyorsunuz.Bunun yanısıra post isteği de var.Bizim en çok kullanacağımız ikisi.Şimdilik get isteklerini belirleyeceğiz.Kullanıcının get isteği yaptığını belirliyoruz.Anasayfaya erişmek istediğini belirtiyoruz.Buna karşılık bir fonksiyon yazacağım aynı daha önce yazmış olduğum gibi.

Press enter or click to view image in full size

Bakın buradakileri çağırıyorum.

Press enter or click to view image in full size

Aynı şekilde bunu login içinde düşünebilirim.

Press enter or click to view image in full size

Artık aşağıdaki yapılara ihtiyacım yok.

Press enter or click to view image in full size

Tek yapmam gereken burayı server.listen ‘dan app.listen’a çevirmek.

Yani kod şu şekilde:

Press enter or click to view image in full size
Press enter or click to view image in full size

Dikkat ediyorsanız programım daha sade bir hale geldi.Burada çok basit bir işlem yaptım aslında.Kulllanıcının gireceği parametreye göre controller’lar belirledim.Yani belirli fonksiyonlar yazdım.Bu fonksiyonlarım cevap fonksiyonları.Kullanıcı benden bir istekte bulunuyor.Bak sana login parametresini verdim ona göre bana bir karşılık ver.Siz de diyorsunuz ki login ‘in isteğini yaptıysan size login.html’i yolluyorum diyor.Get’leri ekleyerek kullanıcının işlemine karşılık yanıtlar belirleyeceğiz.Express bunun yanısıra başka işlemler de yapıyor.En temel görevlerinden birisi bu.Express ,bizim üzerimizden yükü alıyor.

Şimdi projemize bir tane css dosyası eklemeye çalışacağım.Öncelikle css gibi web elemanlarının bulunacağı bir klasör belirliyorum.public olacak klasörün adı.Genelde bu isimde kullanıyorlar.Public’den kasıt şu:

Kullanıcılara açık.Yani eğer ki bir web kullanıcısı sitemize erişmeye çalışırsa kullanıcı bu klasörü ona açık bırakacak.Bu sayede css dosyalarına erişecek.Bunun içiinde bir tane dahaklasör oluşturacağım adı css.Css klasörünün içinde bir tane dosya oluşturacağım style.css.

Burada basit bir css dosyası oluşturuyorum.

Press enter or click to view image in full size

Şimdi index.html’e gidelim.İndex içerisine stylesheet ekliyorum.

Press enter or click to view image in full size

Ve bir paragraf ekledim stili uyguladım.

Press enter or click to view image in full size
Press enter or click to view image in full size

Şimdi burada stil aktif değil neden?

Sayfa kaynağını görüntüle diyip console’a gelirsek.

Kaynağı yüklemede hata var diyor.Public diye bir klasör var ama açık mı diyor.Kullanıcıya bunu söylememişiz.Bizim bu klasörü açmamız gerekiyor.

Press enter or click to view image in full size

Burada express.static diyorum .Diyorum ki bu alanı kullanıcıya açık bırakabilirsin.Eğer ki kullanıcı /public bu klasöre erişirse bizim projemizdeki public klasörüne erişmiş olacak.

Basit bir express konusunu göstermiş oldum.

--

--

Merve Nur Çifci
Merve Nur Çifci

Written by Merve Nur Çifci

I am a computer engineer and I'm also interested in ui/ux design.