Kodla Konuşmanın Eğlenceli Yolu
JavaScript’te string yazmak artık sadece "Merhaba" demek değil…
Artık stringler de konuşuyor, dans ediyor, hatta biraz mizah yapıyor 😎💃
Template Literals ve Tagged Templates, JS’in gizli süper kahramanlarıdır. Onları anlamadan kod yazmak, kahve içmeden sabah kalkmak gibidir: bir eksiklik hissedersiniz ☕🤯
1️⃣ Template Literals Nedir?
“Sihirli Backtick’ler ve JS’in Konuşan String’leri”
Normal string ile:
const name = "Cansu";
console.log("Merhaba, " + name + "!");
- 😬 Sıkıcı, uzun, okunması biraz zor
+operatörü ile uğraşmak bazen hata getirir
Template literal ile:
const name = "Cansu";
console.log(`Merhaba, ${name}!`);
- 🎉 Daha kısa ve temiz
${…}ile JS değişkenlerini direkt string içinde kullanabilirsin- Okurken gözlerin mutlu olur 👀💖
İpucu: Template Literals sadece değişken için değil, her türlü JS ifadesini içine gömebilirsin:
console.log(`2 + 2 = ${2 + 2}`); // 2 + 2 = 4
2️⃣ Çok Satırlı Stringler
“Satır atlama derdi tarihe karıştı!”
Normal string:
console.log("Bu birinci satır\nBu ikinci satır\nBu üçüncü satır");
\nkullanmak biraz eski moda ve hataya açık 😅
Template literal ile:
console.log(`Bu birinci satır
Bu ikinci satır
Bu üçüncü satır`);
- Satır atlamaya gerek yok
- Kod daha temiz ve okunabilir
- Mizah yapmak için her satıra emoji bile ekleyebilirsin:
console.log(`😀 Satır 1
🎉 Satır 2
🚀 Satır 3`);
3️⃣ Dinamik HTML / Mesaj Şablonları
“JS ile HTML Konuşuyor”
Frontend geliştiriciler için bu tam bir mini sihirbazlık 🧙♂️
const user = { name: "Cansu", age: 28, role: "Frontend Developer" };
const html = `
<div class="user-card">
<h2>${user.name}</h2>
<p>Age: ${user.age}</p>
<p>Role: ${user.role}</p>
</div>
`;
console.log(html);
- Dinamik veriyi direkt string içine gömebilirsin
- Kod daha temiz ve okunabilir
- Mini frontend sihirbazlığı ✨
İpucu: Eğer çok satırlı HTML veya mesajlar yazıyorsan, template literals ile indentation ve formatı koruyabilirsin.
4️⃣ Tagged Templates
“String’e Süper Güç Verme”
Template literal sadece stringleri birleştirmekle kalmaz, tagged templates ile stringleri işleyebilir, manipüle edebilir ve özelleştirebilirsin 💪
function emphasize(strings, ...values) {
return strings.reduce((result, str, i) => {
return result + str + (values[i] ? `**${values[i]}**` : "");
}, "");
}
const name = "Cansu";
const age = 28;
const message = emphasize`Merhaba, ben ${name} ve ${age} yaşındayım!`;
console.log(message);
// Merhaba, ben **Cansu** ve **28** yaşındayım!
strings→ string parçalarıvalues→${…}içindeki değerler- Sonuç → istediğin formatta string üretmek
İpucu: Tagged templates ile:
- Emoji ekleyebilirsin
- Büyük/küçük harf değiştirebilirsin
- Logging, validation ve localization yapabilirsin
5️⃣ Eğlenceli Örnek: Emoji ile Mesaj Şablonu
function emoji(strings, ...values) {
return strings.reduce((acc, str, i) => acc + str + (values[i] ? `🔥${values[i]}🔥` : ""), "");
}
const task = "JavaScript öğrenmek";
const status = "harika";
const funMessage = emoji`Bugün ${task} çok ${status}!`;
console.log(funMessage);
// Bugün 🔥JavaScript öğrenmek🔥 çok 🔥harika🔥!
🎉 Artık stringler kendini ifade edebiliyor, JS ile eğlenceli konuşuyor!
- Kod daha interaktif
- Mizah katmanı artıyor
- Okuyan JS geliştirici gülümser 😎
6️⃣ Pratik İpuçları ve Sıradışı Fikirler
- İfadeleri
${…}içine göm
console.log(`5 + 5 = ${5 + 5}`); // 10
- Fonksiyon çağır
function shout(text) { return text.toUpperCase() + "!!!"; }
console.log(`Merhaba, ${shout("cansu")}`); // Merhaba, CANSU!!!
- Localization / Tarih & Sayı formatlama
const price = 2500;
console.log(`Fiyat: ${price.toLocaleString("tr-TR")}₺`); // Fiyat: 2.500₺
- HTML + CSS dinamik şablon
const color = "red";
const html = `<p style="color: ${color}">Bu yazı ${color} renkte!</p>`;
- Debugging için hızlı string check
console.log(`DEBUG: variable=${variable}`);
7️⃣ Mizahi Özet
Template Literals = JS’in konuşan stringleri
Tagged Templates = JS’in süper güçlü, mizah yapan stringleri
- Kullanmazsan → stringler sessiz 😴
- Kullanırsan → kod akıcı, okunabilir ve eğlenceli 🎉
💡 Mini Challenge:
Tagged Template ile kendi emoji mesaj şablonunu yap ve arkadaşlarına JS mizahı göster 😎🔥
