• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Mustache – Template Kullanımı

  • Posted by Kodedu
  • Categories backend, Genel, Tutorial, Uncategorized, Yazılar
  • Date 8 Şubat 2013

Mustache dil bağımsız olarak kullanılan bir template çözümü. Mustache dil bağımsız olmasına karşın çıkış noktasında JavaSript dili aktif olarak rol alıyor. Bu  sebeple Mustache.js sayfasındaki örnekleri incelediğinizde JSON nesnelerinin kullanıldığını görebilirsiniz. Fakat birçok programlama dili için Mustache template çözümünü kullanabilirsiniz.

Javascript dünyasında Mustache.js benzeri onlarca çözüm bulunuyor, örneğin bu bağlantıda Javascript dilinde kullanılabilen template çözümlerine değinmektedir. >>>

Mustache’ in sözdizim kuralları inanılmaz kolay, örneğin aşağıdaki gibi bir HTML elemanı kümesinin elimizde olduğunu düşünelim.


<span> <b>Hoşgeldin </b> {{ad}} {{soyad }}   <b> Ad+Soyad= </b> {{isimUzunluk}} </span>

Mustache yer tutucuları iki tane {{ ifadesiyle başlar ve yine iki tane }} ile sonlanır. Bu ifadelerin arasına ise, Mustache yer tutucuları/değişkenleri uygulanır. Örneğin yukarıdaki HTML tümcesinde ad, soyad ve isimUzunluk adında üç tane yer tutucu yer almaktadır.

Bir sonraki adımda ise, template içindeki yer tutuculara, çeşitli veriler uygulanmaktadır. Bu verileri ise, JSON formatındaki basit Javascript nesneleri sağlamaktadır.


var template,data;

data={
ad:"Mehmet",
soyad:"Yalçın",
isimUzunluk:function(){
return this.ad.length+this.soyad.length;
}
};

template=$('span').html();

$('span').html(Mustache.to_html(template,data));

Yukarıdaki data değişkenine adanmış nesneye baktığımızda, ad ve soyad isimli veri alanlarına ve isimUzunluk isimli Javascript fonksiyonu nesnesine sahip olduğu görülebilir.

İşte tamda bu noktada Mustache’in görevi ortaya çıkmaktadır. Mustache sizin tanımladığınız HTML template kümesine, oluşturduğunuz Javascript nesnesini uygulayarak, sonuçta size yer tutuculara veri giydirilmiş HTML çıktısı döndürmektedir. (Mustache.to_html(.. , ..) ile.)

Örnek uygulamanın çıktısına aşağıdaki fiddle arayüzden erişebilirsiniz.

[wp-js-fiddle url=”http://jsfiddle.net/rahmanusta/gG5St/” style=”width:100%;height:250px;border:solid #4173A0 1px;”]

Bir yukarıdaki örnekte, template olarak tüm <span ../> nesnesi kullanılmıştı. Fakat tekrar kullanılabilirlik ve kompleks HTML kümelerini şablon olarak tanıtmak adına, Mustache HTML <script ../> bileşeni içinde harici template desteği de sunmaktadır.

Örnek olarak aşağıdaki HTML elemanlarına göz atalım.


<div id="placeholder"/>

<script id="yazarlar" type="text/template">
<ul>
{{#yazarlar}}
{{#goster}} <li> {{ad}} {{soyad }} </li> {{/goster}}
{{/yazarlar}}
</ul>
</script>

Yukarıdaki <script ../> bileşenine dikkat kesildiğinde, {{ }} arasında çeşitli yer tutucuların olduğu görülebilir. Fakat bu yer tutucularda diğer örnekten farklı olarak # ve / ifadelerinin kullanıldığı görülür. # ifadesiyle başlayan yer tutucu, ait olduğu yer tutucunun başlangıcını temsil ederken / ile biten yer tutucu ise sonlanışını temsil etmektedir. Bu aralıktaki içerikler ise, o yer tutucunun hakimiyet alanını temsil eder durumdadır.

# ve / ifadeli kullanımın iki avantajı bulunmaktadır. Bir tanesi, dizi elemanı türündeki bileşenleri tek tek dolaşarak, for each benzeri bir etki oluşturmak iken, diğeri ise şart koşumu yaparak sağlanan verinin true/false bilgisine göre, içeriği göster-gösterme şeklinde özetlenebilir.

Şimdi Javascript kod parçasını inceleyerek, olayı daha iyi anlayabiliriz.


var collData,template;

template=$("#yazarlar").html();

collData={
yazarlar:
[
{ad:"Rahman",soyad:"Usta",goster:false},
{ad:"Hüseyin",soyad:"Akdoğan",goster:false},
{ad:"Altuğ",soyad:"Altıntaş",goster:false},
{ad:"Cüneyt",soyad:"Yeşilkaya",goster:true},
{ad:"Ömer Faruk",soyad:"Zorlu",goster:true},
{ad:"Mehmet",soyad:"Yalçın",goster:true}
]
};

$("#placeholder").html(Mustache.to_html(template,collData));

Örneğin buradaki collData nesnesi içinde bir yazarlar dizisi bulunmaktadır. Dizi içindeki tüm elemanalar ise {{#yazarlar}} .. {{/yazarlar}} yer tutucusu içinde tek tek tüketilerek <li ../> bileşenleri içinde HTML sayfasına çıktılanmaktadır. <li ../> elemanı içindeki {{#goster}} .. {{/goster}} yer tutucusu ise, sunulan veriye göre şart işlemi veya listeleme görevi görecektir. yazarlar dizisi içindeki goster verisi Boolean tipi barındırdığı için, Mustache bu yer tutucuyu true/false bilgisine göre HTML sayfasında gösterecek veya göstermeyecektir. Bu örneğin çıktısını da yine aşağıdaki jsfiddle arayüzünden test edebilirsiniz.

[wp-js-fiddle url=”http://jsfiddle.net/rahmanusta/XfnhL/” style=”width:100%;height:300px;border:solid #4173A0 1px;”]

 

Tekrar görüşmek dileğiyle.

Tag:frontend, json, mustache

  • Share:
author avatar
Kodedu

Previous post

Knockout.js - Hesap Makinesi Örneği
8 Şubat 2013

Next post

Spring MVC - Mustache Kardeşliği
16 Şubat 2013

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

    3 Comments

  1. Mehmet
    14 Şubat 2018
    Cevapla

    Çok anlaşılır bir yazı olmuş, teşekkürler.

Leave A Reply Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta listesine kayıt olun!






Gözde yazılar

Java Mimarisiyle Kurumsal Çözümler : Kurumsal Java Kitabı
16Eyl2012
Java API for JSON Processing – Stream bazlı JSON Üretmek ve Tüketmek
06Ağu2013
AsciidocFX projesi Duke’s Choice Award 2015 ödülünü kazandı
28Eki2015
Knockout.js – Hesap Makinesi Örneği
02Şub2013

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • Coupling ve Cohesion Kavramları Nedir? için Hilal
  • Naïve Bayes Sınıflandırma Algoritması için Rahman Usta
  • Naïve Bayes Sınıflandırma Algoritması için Mete
  • YAML Nedir? Neden YAML Kullanmalıyız? için kara
  • JWT (JSON Web Tokens) Nedir? Ne işe yarar? için Furkan

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.