Express.js, TJ Holowaychuk tarafından 2009 yılında geliştirilmeye başlanan ve günümüzde Strongloop tarafından geliştirilen, Nisan 2013 tarihli yazımızda bahsettiğimiz ve geçtiğimiz yıllarda ününü gittikçe arttıran node.js ile günümüz standartlarına uygun bir internet sayfası oluşturmayı kolaylaştırmayı hedefleyen bir kütüphanedir. Node.js web arayüzü geliştiricilerinin kullanımı için yanlızca temel fonksiyonları(dinleme, temel cevap oluşturma gibi) sağlamakta ve sadece bunları kullanarak bir web sitesi oluşturmak yüksek miktarda kod tekrarına yol açmaktadır. Express.js de gelişmiş yönlendirme, aracı yazılım (middleware) yönetimi araçlarıyla ve eklentilerle genişletilebilirliği sayesinde, node.js ile yaygın olarak kullanılan bir kütüphane haline gelmiştir.

Express.js'nin kullanıcılarına sağladığı kolaylıkların detayına inecek olursak en başta istek yönlendimesine değinmemiz gerekir. Express.js kullanılmadan yazılan bir node.js sunucusunda olabilecek her bir isteğin ayrı ayrı değerlendirilmesi ve http modülünün aktardığı isteğin bütün bileşenlerinin teker teker kontrol edilmesi gerekmektedir. Örnek vermemiz gerekirse Merhaba Dünya metni ve bir 404 sayfasını içeren sunucu express.js kullanmadan:

var http=require("http");
http.createServer(function(istek,cevap){
    if(istek.url==='/' & istek.method===”GET”){
        cevap.end('Merhaba Dunya!');
        return;
    }
    cevap.end('Sayfa bulunamadi:(');
    return;
}).listen(port);

Express.js kullanarak ise:

var express=require("express");
var uyg=express();
uyg.get("/",function(istek,cevap){
    cevap.send("Merhaba Dunya!");
});
uyg.all("*",function(istek,cevap){
    cevap.send("Sayfa bulunamadı:(");
});
uyg.listen(port);

şeklinde gerçekleştirilebilir. İki kod parçası da aynı işlevde olmakla birlikte express.js ile yazılan kod her farklı istek için ayrı ayrı denetlemeyi engelleyerek kodun modülaritesini arttırmaktadır. Ayrıca temel istek fonksiyonlarının çağrılması sırasında başka geriçağırım (callback) fonksiyonlarını çağırma ve kurallı ifade (regular expression) ile yönlendirme desteği bulunmaktadır.

Express.js'nin bir başka node.js'yi genişleten yönüne değinmemiz gerekirse, aracı yazılım yazımını kolaylaştırması ve bunun sonucunda istenilen kütüphanenin veya kod parçasının gelen istek veya gönderilecek cevap üzerinde işlem yapması kullanıcıdan soyutlanmıştır. Ayrıca, kullanıcı gerek gördüğü zaman kendi aracı yazılımını da yönlendiricinin istediği herhangi bir yerinde çalışmak üzere yazabilmektedir.

Ayrıca express.js'nin içerisinde bulunan eklentiler de standart bir web sayfasında varolan birçok bileşenin oluşturulmasına yardımcı olmaktadır. Bu eklentiler express.js'nin 4.0 sürümü itibariyle ana kütüphaneden bağımsız eklentiler olarak kullanılmaya başlanmışlardır. Bu eklentilerin bazılarından ve temel işlevlerinden bahsedecek olursak:

  • body-parser sunucuya gönderilen talebin içeriğinin uygun parçalarına ayrılmasını,

  • cookie-session ve cookie-parser çerez yönetimi ve oturum detaylarının işlenmesini,

  • morgan sunucu kayıtlarının istenilen detaylar ile istenilen formatta tutulmasını,

  • express-session yönetici arayüzü, kullanıcı kaydı gibi kişiye özel arayüzlerin yapılması için oturum yönetimini,

  • response-time sunucuya talebin gelmesinden cevabın yazımına kadar olan bütün işlemlerin ne kadar sürdüğünün ölçülmesini,

  • csurf sitelerarası istek sahtekarlığının (CSRF) engellenmesi için belirteç (token) üretilmesini,

sağlamaktadır.

Express.js her ne kadar web sitesi kurulumu için temel sunucu işlemlerini kolaylaştıran güçlü bir kütüphane olsa da, üzerinde çalıştığı node.js gibi kararlı bir kütüphane olmak için daha yeni olduğunu da göz önünde bulundurmamız gerekiyor. Buna göre kullanıcılarının, birçok rakibine nazaran daha küçük bir geliştirici ekibinin olması sonucunda daha yavaş bir gelişim süreci ve az bir kullanıcı desteği ile karşılaşacağı genel olarak express.js'nin şikayet edilen tek yönü diyebiliriz.

Bu yazımda, sürekli gelişimleri ile ileride daha çok adının duyulacağından emin olduğum express.js'nin genel olarak özelliklerine değinmeye çalıştım. Eğer siz de express.js ile uygulama geliştirmek isterseniz, kendi sitesi olan http://expressjs.com adresini ziyaret edebilirsiniz.

Kaynakça: