Türkçe

Vue.js 3 Composition API'sini derinlemesine keşfedin. Dünya çapındaki geliştiriciler için pratik örnekler ve en iyi uygulamalarla yeniden kullanılabilir, bakımı kolay ve test edilebilir Vue.js uygulamaları oluşturmayı öğrenin.

Vue.js 3 Composition API: Global Geliştiriciler için Derinlemesine Bir İnceleme

Vue.js, anlaşılır öğrenme eğrisi ve güçlü özellikleri sayesinde modern web uygulamaları oluşturmak için hızla popüler bir seçenek haline geldi. Vue.js 3, bileşen mantığınızı organize etmenin yeni bir yolu olan Composition API'nin tanıtımıyla bunu daha da ileri taşıyor. Bu derinlemesine inceleme, Composition API'yi etkili bir şekilde anlamak ve kullanmak için kapsamlı bir rehber sunarak, sizi daha sürdürülebilir, yeniden kullanılabilir ve test edilebilir Vue uygulamaları oluşturma becerileriyle donatır.

Composition API Nedir?

Composition API, Vue bileşenlerini seçenekleri bildirmek yerine içe aktarılan fonksiyonları kullanarak yazmamızı sağlayan bir API setidir. Esasen, şablonda nerede göründüğüne bakılmaksızın ilgili mantığı bir araya toplamanıza olanak tanır. Bu, kodu bu önceden tanımlanmış kategorilere göre düzenlemeye zorlayan Options API (data, methods, computed, watch) ile çelişir. Options API'yi kodunuzu *ne olduğuna* (veri, metot vb.) göre organize etmek olarak düşünün, oysa Composition API kodu *ne yaptığına* göre organize etmenize olanak tanır.

Composition API'nin çekirdeği setup() fonksiyonu etrafında döner. Bu fonksiyon, bir bileşen içinde Composition API'yi kullanmanın giriş noktasıdır. setup() içinde, composable fonksiyonlar kullanarak reaktif durum, hesaplanmış özellikler, metotlar ve yaşam döngüsü kancaları tanımlayabilirsiniz.

Neden Composition API Kullanmalı?

Composition API, geleneksel Options API'ye göre, özellikle daha büyük ve karmaşık uygulamalar için birçok avantaj sunar:

Temel Kavramları Anlamak

Şimdi Composition API'nin temelini oluşturan anahtar kavramlara dalalım:

1. setup()

Daha önce de belirtildiği gibi, setup() Composition API'yi kullanmanın giriş noktasıdır. Bu, bileşen oluşturulmadan önce yürütülen bir bileşen seçeneğidir. setup() içinde reaktif durum, hesaplanmış özellikler, metotlar ve yaşam döngüsü kancaları tanımlar ve ardından şablona sunmak istediğiniz değerleri içeren bir nesne döndürürsünüz.

Örnek:

import { ref } from 'vue'

export default {
  setup() {
    const count = ref(0)

    const increment = () => {
      count.value++
    }

    return {
      count,
      increment
    }
  }
}

Bu örnekte, count adında reaktif bir değişken oluşturmak için ref kullanıyoruz. Ayrıca count değerini artıran increment adında bir metot tanımlıyoruz. Son olarak, count ve increment içeren bir nesne döndürüyoruz, bu da onları bileşenin şablonunda kullanılabilir hale getiriyor.

2. ref ve reactive ile Reaktif Durum

Composition API, reaktif durum oluşturmak için iki temel fonksiyon sunar: ref ve reactive.

ref kullanarak örnek:

import { ref } from 'vue'

export default {
  setup() {
    const message = ref('Merhaba, Vue!')

    const updateMessage = (newMessage) => {
      message.value = newMessage
    }

    return {
      message,
      updateMessage
    }
  }
}

reactive kullanarak örnek:

import { reactive } from 'vue'

export default {
  setup() {
    const state = reactive({
      name: 'John Doe',
      age: 30
    })

    const updateName = (newName) => {
      state.name = newName
    }

    return {
      state,
      updateName
    }
  }
}

3. computed ile Hesaplanmış Özellikler

Hesaplanmış özellikler, diğer reaktif durumlardan türetilen değerlerdir. Bağımlılıkları her değiştiğinde otomatik olarak güncellenirler. computed fonksiyonu bir getter fonksiyonunu argüman olarak alır ve salt okunur reaktif bir ref döndürür.

Örnek:

import { ref, computed } from 'vue'

export default {
  setup() {
    const firstName = ref('John')
    const lastName = ref('Doe')

    const fullName = computed(() => {
      return `${firstName.value} ${lastName.value}`
    })

    return {
      firstName,
      lastName,
      fullName
    }
  }
}

Bu örnekte, fullName, firstName ve lastName'e bağlı bir hesaplanmış özelliktir. firstName veya lastName her değiştiğinde, fullName otomatik olarak güncellenecektir.

4. watch ve watchEffect ile Gözlemciler

Gözlemciler, reaktif durumdaki değişikliklere tepki vermenizi sağlar. Composition API, gözlemciler oluşturmak için iki ana yol sunar: watch ve watchEffect.

watch kullanarak örnek:

import { ref, watch } from 'vue'

export default {
  setup() {
    const count = ref(0)

    watch(
      count,
      (newValue, oldValue) => {
        console.log(`Sayı ${oldValue} değerinden ${newValue} değerine değişti`)
      }
    )

    const increment = () => {
      count.value++
    }

    return {
      count,
      increment
    }
  }
}

watchEffect kullanarak örnek:

import { ref, watchEffect } from 'vue'

export default {
  setup() {
    const message = ref('Merhaba')

    watchEffect(() => {
      console.log(`Mesaj: ${message.value}`)
    })

    const updateMessage = (newMessage) => {
      message.value = newMessage
    }

    return {
      message,
      updateMessage
    }
  }
}

5. Yaşam Döngüsü Kancaları

Composition API, onMounted, onUpdated ve onUnmounted gibi on ile başlayan fonksiyonlar aracılığıyla bileşen yaşam döngüsü kancalarına erişim sağlar. Bu fonksiyonlar, ilgili yaşam döngüsü kancası tetiklendiğinde yürütülecek bir geri arama fonksiyonunu argüman olarak alır.

Örnek:

import { onMounted, onUnmounted } from 'vue'

export default {
  setup() {
    onMounted(() => {
      console.log('Bileşen bağlandı (mounted)')
    })

    onUnmounted(() => {
      console.log('Bileşen kaldırıldı (unmounted)')
    })

    return {}
  }
}

Composable Fonksiyonlar Oluşturma

Composition API'nin gerçek gücü, yeniden kullanılabilir composable fonksiyonlar oluşturma yeteneğinden gelir. Bir composable fonksiyon, bir parça bileşen mantığını kapsayan ve birden çok bileşende kullanılabilen reaktif durum ve fonksiyonlar döndüren basit bir fonksiyondur.

Örnek: Fare konumunu izleyen bir composable fonksiyon oluşturalım:

import { ref, onMounted, onUnmounted } from 'vue'

export function useMousePosition() {
  const x = ref(0)
  const y = ref(0)

  const updatePosition = (event) => {
    x.value = event.clientX
    y.value = event.clientY
  }

  onMounted(() => {
    window.addEventListener('mousemove', updatePosition)
  })

  onUnmounted(() => {
    window.removeEventListener('mousemove', updatePosition)
  })

  return {
    x,
    y
  }
}

Şimdi, bu composable fonksiyonu herhangi bir bileşende kullanabilirsiniz:

import { useMousePosition } from './useMousePosition'

export default {
  setup() {
    const { x, y } = useMousePosition()

    return {
      x,
      y
    }
  }
}

Pratik Örnekler ve Kullanım Senaryoları

Composition API'nin gerçek dünya senaryolarında nasıl kullanılabileceğine dair bazı pratik örnekleri inceleyelim:

1. Veri Çekme

Bir API'den veri çekmek için bir composable fonksiyon oluşturmak yaygın bir kullanım durumudur. Bu, aynı veri çekme mantığını birden çok bileşende yeniden kullanmanıza olanak tanır.

import { ref, onMounted } from 'vue'

export function useFetch(url) {
  const data = ref(null)
  const error = ref(null)
  const loading = ref(true)

  onMounted(async () => {
    try {
      const response = await fetch(url)
      data.value = await response.json()
    } catch (err) {
      error.value = err
    } finally {
      loading.value = false
    }
  })

  return {
    data,
    error,
    loading
  }
}

Daha sonra bu composable fonksiyonu bileşenlerinizde şu şekilde kullanabilirsiniz:

import { useFetch } from './useFetch'

export default {
  setup() {
    const { data, error, loading } = useFetch('https://api.example.com/data')

    return {
      data,
      error,
      loading
    }
  }
}

2. Form Doğrulama

Form doğrulama, Composition API'nin çok yardımcı olabileceği başka bir alandır. Doğrulama mantığını kapsayan composable fonksiyonlar oluşturabilir ve bunları farklı formlarda yeniden kullanabilirsiniz.

import { ref } from 'vue'

export function useValidation() {
  const errors = ref({})

  const validateField = (fieldName, value, rules) => {
    let error = null
    for (const rule of rules) {
      if (rule === 'required' && !value) {
        error = 'Bu alan zorunludur'
        break
      } else if (rule === 'email' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
        error = 'Geçersiz e-posta formatı'
        break
      }
    }

    if (error) {
      errors.value[fieldName] = error
    } else {
      delete errors.value[fieldName]
    }
  }

  return {
    errors,
    validateField
  }
}

Bir bileşende kullanımı:

import { useValidation } from './useValidation'
import { ref } from 'vue'

export default {
  setup() {
    const { errors, validateField } = useValidation()
    const email = ref('')

    const validateEmail = () => {
      validateField('email', email.value, ['required', 'email'])
    }

    return {
      email,
      errors,
      validateEmail
    }
  }
}

3. Kullanıcı Kimlik Doğrulamasını Yönetme

Kimlik doğrulama mantığı genellikle karmaşık olabilir ve birden çok bileşende tekrarlanabilir. Composition API, tüm kimlik doğrulama mantığını kapsayan ve bileşenlerinizin kullanması için temiz bir API sağlayan bir composable fonksiyon oluşturmanıza olanak tanır.

Örnek: (Basitleştirilmiş)

import { ref } from 'vue'

export function useAuth() {
  const isLoggedIn = ref(false)
  const user = ref(null)

  const login = async (username, password) => {
    // API çağrısını simüle et
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = true
    user.value = { username }
  }

  const logout = async () => {
    // API çağrısını simüle et
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = false
    user.value = null
  }

  return {
    isLoggedIn,
    user,
    login,
    logout
  }
}

Composition API Kullanımı için En İyi Uygulamalar

Composition API'den en iyi şekilde yararlanmak için aşağıdaki en iyi uygulamaları göz önünde bulundurun:

Yaygın Hatalar ve Bunlardan Kaçınma Yolları

Composition API birçok fayda sunarken, farkında olunması gereken bazı yaygın tuzaklar da vardır:

Composition API ve Global Ekipler

Composition API, aşağıdakileri teşvik ederek global geliştirme ekipleri içindeki iş birliğini besler:

Sonuç

Vue.js 3 Composition API, Vue uygulamalarınızın organizasyonunu, yeniden kullanılabilirliğini ve test edilebilirliğini önemli ölçüde artırabilen güçlü bir araçtır. Bu derinlemesine incelemede özetlenen temel kavramları anlayarak ve en iyi uygulamaları takip ederek, Composition API'den yararlanarak global bir kitle için daha sürdürülebilir ve ölçeklenebilir uygulamalar oluşturabilirsiniz. Composition API'yi benimseyin ve Vue.js 3'ün tüm potansiyelini ortaya çıkarın.

Kendi projelerinizde Composition API ile denemeler yapmanızı ve sunduğu geniş olanakları keşfetmenizi öneririz. İyi kodlamalar!