Ejs Tema Dosyasına Değişken Gönderme

Express Oturum Değişkenlerine Ejs Dosyasından Nasıl Ulaşılır?

Eğer express ile bir uygulama geliştiriyorsanız büyük ihtimalle oturum özelliklerinden de faydalanıyorsunuzdur. Oturum kapsamındaki verileri express-session ile tutabiliriz. Ayrıca elimizde olan ve arayüz üzerinde bize lazım olacak verileri de oturumlarda saklayabiliriz. Yada bir oturum verisini arayüz üzerinde kullanmak isteyebilirsiniz.

render İşlemi Çağrılırken Değişken Göndermek

Bir isteği cevaplarken eğer bir ejs dosyasını render edeceksek, bu dosyaya render işlemi sırasında ikinci parametre olarak bir değişken atayarak bunun ejs dosyasına gitmesini sağlayabiliriz.

app.get("/", (req, res) => {
   res.render("index", { title: "The title" });
});

render ilk parametre olarak render edilecek dosya bilgisini alır ikinci parametre olarak da ejs dosyasına göndermek istediğimiz değişkenleri tutan bir nesne alır. Yukarıdaki örneğimizde title değerini index.ejs dosyasına nasıl gönderdiğimizi görüyorsunuz.

global Nesnesini Kullanmak

Bunun için yapılacak işlerden bir tanesi global nesnesini kullanmaktır. global üzerinde tanımladığımız değişkenlere uygulamanın tüm noktalarından isimleri ile ulaşılabilir. Mesela elimizde ki app.js üzerinde bir global nesne tanımlayalım.

...
global.title = "A test title";
...

Bu kadar artırk elimizde global düzeyde kullanabileceğimiz bir değişkenimiz bulunuyor. Bunu mesela index.ejs üzerinde kullanalım.

...
<h2><%= title %></h2>
...

Gördüğünüz gibi oldukça kolay oldu.

res.locals Nesnesi Üzerinde Değişken Tanımlamak

global nesnesini kullanabildiğimiz gibi bu gibi durumlarda ayrıca res.locals üzerinde de değişkenler tanımlayabiliriz ve sonrasında bu değişkenlere kolayca ulaşabiliriz. Bir değişkeni res.locals üzerinde şu şekilde tanımlayabiliriz.

app.get("/", (req, res) => {
    res.locals.color = "black";
    ...
});

Oluşturduğumuz değişkene ejs dosyası üzerinden sadece ismi ile ulaşabiliriz.

<div style="background-color: <%= color %>">
   Bu bölümde zemin rengi, res.locals.color ile tanımlanmış olan değişken alınacaktır.
</div>

Görüldüğü gibi res.locals.color olarak tanımladığımız değişkene ejs üzerinden sadece ismi ile yani color ile ulaştık.

res.locals nesnesine bir apt.get üzerinden veya middleware bir fonksiyonunda rahatlıkla ulaşılabilir.

Oturum Verisini Ejs Dosyasına Nasıl Geçirilir?

Şimdi asıl konumuza dönelim ve bir oturum verini bir ejs dosyasına kolayca nasıl geçebileceğimizi görelim. Mesela tema bilgilerini tuttuğumuz bir themeInfo değişkenimiz olsun ve bu değişkenin ejs dosyasına geçmesi gerektiğini kabul edelim. Bunun için bir ara katman fonksiyonu (middleware) kullanabiliriz. Yazacağımız fonksiyon içerisinde res.locals nesnesini kullanarak ona istediğimiz değişkenleri atayabiliriz.

app.use("*", (req, res, next) => {
   res.locals.themeInfo = req.session.userTheme;
   next();
});

Yazdığımı bu fonksiyonu oturum tanımlamasından sonra çağırmak gerekiyor. Eğer oturum başlamadı ise req.session.userTheme tanımlanmamış demektir. * her istek yapıldığında bu fonksiyonun çalışması gerektiğini belirtir. Böylece her istekte oturum üzerinde kayıtlı olan userTheme bilgisini res.locals.themeInfo değişkenine atıyoruz. Böylelikle ejs dosyası üzerinde themeInfo bilgisi ile oturumdaki tema bilgilerine ulaşmış olacağız.

Sonuç

Farklı durumlar için kullanılabilecek farklı araçlar programcılar için geliştirilmiştir. Bu yazımızda ejs dosyaları üzerinde rahatlıkla ulaşabileceğimiz değişkenleri nasıl oluşturabileceğimizi gördük.

Eklemek istediklerinizi bizim ile yorumlarda paylaşabilirsiniz.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir