Ana içeriğe geç

Vue.js Direktifleri Kullanımı: Yerleşik ve Özel Directive Rehberi

Bu Rehberde Ne Öğreneceksiniz?​

Vue.js, HTML şablonlarını direktifler ile dinamik hale getirir.
Bu rehberde yerleşik ve özel Vue.js direktiflerini öğreneceksiniz.
Gerçek örneklerle temiz, okunabilir ve ölçeklenebilir arayüzler oluşturacaksınız.


Vue.js Direktifleri Nedir?​

Direktifler, HTML üzerinde çalışan Vue’ya özel niteliklerdir.
Tümü v- ön eki ile başlar.
Şablonlara koşul, etkileşim ve veri bağlama yeteneği kazandırır.


Ön Gereksinimler​

  • HTML, CSS ve JavaScript bilgisi
  • Vue.js temel kavramlarına aşinalık
  • Custom directive için Node.js ve Vue CLI

1. Koşullu Render (v-if, v-else-if, v-else)​

Bu direktifler, JavaScript if / else mantığını HTML’e taşır.
Koşul false ise element DOM’a hiç eklenmez.

<p v-if="kullanici.ad && kullanici.soyad">
Hoş geldin, {{ kullanici.ad }} {{ kullanici.soyad }}
</p>
<p v-else-if="kullanici.kullaniciAdi">
Hoş geldin, {{ kullanici.kullaniciAdi }}
</p>
<div v-else>
<button>Giriş Yap</button>
<button>Hesap Oluştur</button>
</div>
  • v-else ve v-else-if, doğrudan v-if sonrası kullanılmalıdır.

2. Görünürlük Kontrolü (v-show)​

  1. v-show, elementi DOM’da tutar ama gizler.
  2. CSS tarafında display: none uygular.
  3. Sık açılıp kapanan alanlar için daha performanslıdır.


<div v-show="girisYapildiMi">
<p>Panele hoş geldiniz</p>
</div>
<div v-show="!girisYapildiMi">
<button>Giriş Yap</button>
</div>
  • v-if ve v-show Farkı

  • v-if: DOM’dan tamamen kaldırır

  • v-show: DOM’da tutar, sadece gizler


3. Olay Yönetimi (v-on)​

  1. v-on, kullanıcı etkileşimlerini yakalar.
  2. Kısayol olarak @ kullanılır.

<button @click.once="tikla">Bana Tıkla</button>


function tikla() {
alert('Butona tıklandı')
}

Sık Kullanılan Modifier’lar​

  1. .once → Sadece bir kez çalışır

  2. .prevent → Varsayılan davranışı engeller

  3. .stop → Event yayılımını durdurur


4. Veri Bağlama (v-bind ve v-model)​

v-bind (Tek Yönlü Bağlama)​

  1. HTML özelliklerini dinamik hale getirir.
  2. Kısayolu : karakteridir.

<a :href="wikiLink">{&#123; sehir &#125;}</a>


import &#123; computed &#125; from 'vue'

const sehir = 'İstanbul'
const wikiLink = computed(() => `https://tr.wikipedia.org/wiki/$&#123;sehir&#125;`)
v-model (Çift Yönlü Bağlama)
  • Form elemanları için kullanılır.
  • Veri ve arayüz senkron çalışır.


<input v-model="sehir" placeholder="Şehir giriniz" />
<p>Seçilen şehir: {&#123; sehir &#125;}</p>

5. Ham HTML Render (v-html)​

  1. String içindeki HTML’i doğrudan render eder.

<div v-html="htmlIcerik"></div>


const htmlIcerik = '<p>Bu <strong>HTML</strong> içeriktir</p>'

⚠️ Güvenlik Uyarısı:

  1. v-html, güvenilmeyen verilerde XSS riski oluşturur.
  2. Sadece güvenli kaynaklarda kullanın.

6. Custom Directive Oluşturma​

  1. Vue’nun sundukları yetmezse özel direktif yazabilirsiniz.
  2. Aşağıda v-tema isimli örnek bir directive bulunur.

const app = createApp(App)

app.directive('tema', {
mounted(el, binding) {
if (binding.value === 'birincil') {
el.style.color = '#ff6b00'
} else if (binding.value === 'ikincil') {
el.style.color = '#2c3e50'
} else {
el.style.color = 'black'
}
}
})

app.mount('#app')
  • Template içinde kullanım:

<p v-tema="'birincil'">Bu yazı turuncudur</p>
<p v-tema="'ikincil'">Bu yazı koyu renklidir</p>

Sıkça Sorulan Sorular (SSS)​

1. v-if mi v-show mu kullanmalıyım? Sık değişiyorsa v-show, nadirse v-if tercih edilir.

2. v-model sadece input için mi? Hayır. Component’lerde de kullanılabilir.

3. Custom directive ne zaman mantıklı? Düşük seviye DOM işlemlerinde.

4. v-bind kısayolu nedir? :href, v-bind:href ile aynıdır.


Sonuç​

Bu rehberle Vue.js direktiflerini uçtan uca öğrendiniz. Arayüzlerinizi daha dinamik, güvenli ve yönetilebilir hale getirdiniz. Vue projelerinizi yüksek performanslı altyapılarda çalıştırmak için Rabisu Bulut çözümlerini hemen inceleyebilirsiniz.