Şablon Motorları
Node.js’de şablon motorları, sunucudan gelen verileri dinamik olarak HTML sayfalarına dönüştürmek için kullanılan güçlü araçlardır. Bu motorlar, iş mantığını ve sunum katmanını ayırarak kodun okunabilirliğini, sürdürülebilirliğini ve ölçeklenebilirliğini artırır. Şablon motorları sayesinde döngüler, koşullar ve yardımcı fonksiyonlar doğrudan şablon dosyalarında kullanılabilir, bu da verimli ve güvenli bir HTML üretimi sağlar.
Node.js projelerinde, veritabanı sorguları, API çağrıları veya sunucuda yapılan hesaplamalar sonucunda elde edilen verileri kullanıcıya göstermek için şablon motorları kullanılabilir. Bu eğitimde, Node.js’in temel kavramları olan sözdizimi, veri yapıları, algoritmalar ve nesne yönelimli programlama (OOP) prensipleri şablon motorları üzerinden uygulanacaktır.
Bu eğitim sonunda katılımcılar, şablon motorları ile dinamik sayfalar oluşturmayı, verileri şablonlara iletmeyi, hataları yönetmeyi ve performans optimizasyonu yapmayı öğreneceklerdir. Ayrıca, bu tekniklerin modern web uygulama mimarileri içerisinde nasıl entegre edildiğini, Node.js en iyi uygulamaları ile gerçek projelerde nasıl kullanılacağını kavrayacaklardır.
Temel Örnek
textconst express = require('express');
const path = require('path');
const app = express();
const PORT = 3000;
// EJS şablon motorunu ayarla
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// Örnek veri
const kullanicilar = [
{ isim: 'Ahmet', yas: 28 },
{ isim: 'Ayşe', yas: 34 },
{ isim: 'Mehmet', yas: 22 }
];
// Ana sayfa rotası
app.get('/', (req, res) => {
res.render('index', { kullanicilar });
});
// Sunucuyu başlat
app.listen(PORT, () => {
console.log(`Sunucu çalışıyor: http://localhost:${PORT}`);
});
Bu temel örnekte Express ve EJS şablon motoru kullanılmaktadır. Önemli noktalar:
- app.set('view engine', 'ejs') ifadesi EJS’yi şablon motoru olarak tanımlar.
- app.set('views', path.join(__dirname, 'views')) şablonların bulunduğu klasörü belirler.
- kullanicilar dizisi, şablona iletilecek veri kümesini temsil eder ve döngüler veya koşullar için kullanılabilir.
- res.render('index', { kullanicilar }) veriyi şablona gönderir ve HTML üretir, böylece sunum ve iş mantığı ayrılır.
Bu yapı, bellek sızıntılarını önler, okunabilirliği artırır ve Node.js en iyi uygulamalarına uygundur.
Pratik Örnek
textconst express = require('express');
const path = require('path');
class Kullanici {
constructor(isim, yas) {
this.isim = isim;
this.yas = yas;
}
yetiskinMi() {
return this.yas >= 18;
}
}
const app = express();
const PORT = 3000;
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
const kullanicilar = [
new Kullanici('Ahmet', 28),
new Kullanici('Ayşe', 34),
new Kullanici('Mehmet', 15)
];
app.get('/', (req, res) => {
try {
res.render('index', { kullanicilar });
} catch (error) {
console.error('Şablon render hatası:', error);
res.status(500).send('Sunucu hatası');
}
});
app.listen(PORT, () => {
console.log(`Sunucu çalışıyor: http://localhost:${PORT}`);
});
Bu gelişmiş örnek, OOP prensiplerinin şablon motorları ile nasıl entegre edileceğini göstermektedir. Kullanici sınıfı, yetiskinMi metoduyla iş mantığını kapsüller.
- try/catch bloğu ile res.render hataları yakalanır ve sunucunun kararlılığı korunur.
- Nesneleri şablona göndermek, şablonda metodları kullanmayı ve kod organizasyonunu artırır.
- Bu yaklaşım bellek sızıntılarını, verimsiz döngüleri ve iş mantığıyla sunumu karıştırmayı önler, performans ve okunabilirliği artırır.
📊 Referans Tablosu
Node.js Element/Concept | Description | Usage Example |
---|---|---|
Şablon motoru EJS | Dinamik HTML üretimi | app.set('view engine', 'ejs') |
Şablona veri gönderme | Sunucudan şablona veri iletimi | res.render('index', { kullanicilar }) |
OOP ve kapsülleme | Mantık ve veri organizasyonu | class Kullanici { yetiskinMi() {...} } |
Hata yönetimi | Render hatalarını kontrol etme | try { res.render(...) } catch(err) {...} |
Sorumluluk ayrımı | Mantık ve sunumun ayrılması | Controller veri hazırlar, şablon render eder |
Şablon motorlarını öğrenmek, Node.js projelerinde dinamik HTML üretimi, OOP prensipleri ve verimli veri yönetimi sağlar. Sonraki adımlar olarak Pug ve Handlebars motorlarını incelemek, veritabanı entegrasyonu, cache uygulamaları ve render optimizasyon tekniklerini öğrenmek önerilir. Resmi dokümantasyon, GitHub örnekleri ve topluluk kaynakları ile bilgi derinleştirilebilir ve gerçek projelerde uygulanabilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek