O'zbek

Vue.js 3 Composition API ni chuqur o'rganing. Dunyo bo'ylab dasturchilar uchun amaliy misollar va eng yaxshi amaliyotlar bilan qayta ishlatiladigan, qo'llab-quvvatlanadigan va sinovdan o'tkaziladigan Vue.js ilovalarini yaratishni o'rganing.

Vue.js 3 Composition API: Global Dasturchilar uchun Chuqur O'rganish

Vue.js o'zining sodda o'rganish egri chizig'i va kuchli xususiyatlari tufayli zamonaviy veb-ilovalar yaratish uchun tezda mashhur tanlovga aylandi. Vue.js 3 bu yo'nalishni Composition API ni joriy etish bilan yanada rivojlantirdi, bu sizning komponent mantiqingizni tashkil etishning yangi usulidir. Ushbu chuqur o'rganish Composition API ni samarali tushunish va undan foydalanish bo'yicha keng qamrovli qo'llanmani taqdim etadi va sizni yanada qo'llab-quvvatlanadigan, qayta ishlatiladigan va sinovdan o'tkaziladigan Vue ilovalarini yaratish ko'nikmalari bilan ta'minlaydi.

Composition API nima?

Composition API — bu bizga variantlarni e'lon qilish o'rniga import qilingan funksiyalardan foydalanib Vue komponentlarini yaratish imkonini beruvchi API lar to'plamidir. Asosan, u shablonda qayerda paydo bo'lishidan qat'i nazar, bog'liq mantiqni bir guruhga to'plash imkonini beradi. Bu kodni oldindan belgilangan toifalarga asoslanib tashkil etishga majbur qiladigan Options API (data, methods, computed, watch) dan farq qiladi. Options API ni kodingizni uning *nima* ekanligiga (ma'lumot, metod va hokazo) qarab tashkil etish deb o'ylang, Composition API esa kodni *nima qilishiga* qarab tashkil etishga imkon beradi.

Composition API ning yadrosi setup() funksiyasi atrofida aylanadi. Bu funksiya komponent ichida Composition API dan foydalanish uchun kirish nuqtasi hisoblanadi. setup() ichida siz kompozitsiyalanadigan (composable) funksiyalardan foydalanib, reaktiv holat, hisoblanadigan xususiyatlar, metodlar va hayotiy sikl ilgaklarini (lifecycle hooks) aniqlashingiz mumkin.

Nima uchun Composition API dan foydalanish kerak?

Composition API an'anaviy Options API ga nisbatan, ayniqsa, katta va murakkab ilovalar uchun bir nechta afzalliklarni taklif etadi:

Asosiy Tushunchalarni Tushunish

Keling, Composition API asosini tashkil etuvchi asosiy tushunchalarni ko'rib chiqamiz:

1. setup()

Yuqorida aytib o'tilganidek, setup() Composition API dan foydalanish uchun kirish nuqtasi hisoblanadi. Bu komponent yaratilishidan oldin bajariladigan komponent variantidir. setup() ichida siz reaktiv holat, hisoblanadigan xususiyatlar, metodlar va hayotiy sikl ilgaklarini aniqlaysiz, so'ngra shablonga ochib berishni istagan qiymatlarni o'z ichiga olgan obyektni qaytarasiz.

Misol:

import { ref } from 'vue'

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

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

    return {
      count,
      increment
    }
  }
}

Ushbu misolda biz ref dan count deb nomlangan reaktiv o'zgaruvchi yaratish uchun foydalanyapmiz. Shuningdek, count qiymatini oshiradigan increment nomli metodni aniqlaymiz. Nihoyat, biz count va increment ni o'z ichiga olgan obyektni qaytaramiz, bu ularni komponent shablonida mavjud qiladi.

2. ref va reactive bilan Reaktiv Holat

Composition API reaktiv holat yaratish uchun ikkita asosiy funksiyani taqdim etadi: ref va reactive.

ref yordamida misol:

import { ref } from 'vue'

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

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

    return {
      message,
      updateMessage
    }
  }
}

reactive yordamida misol:

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 bilan Hisoblanadigan Xususiyatlar

Hisoblanadigan xususiyatlar boshqa reaktiv holatlardan olingan qiymatlardir. Ular bog'liqliklari o'zgarganda avtomatik ravishda yangilanadi. computed funksiyasi argument sifatida getter funksiyasini oladi va faqat o'qish uchun mo'ljallangan reaktiv ref ni qaytaradi.

Misol:

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
    }
  }
}

Ushbu misolda, fullName - bu firstName va lastName ga bog'liq bo'lgan hisoblanadigan xususiyat. firstName yoki lastName o'zgarganda, fullName avtomatik ravishda yangilanadi.

4. watch va watchEffect bilan Kuzatuvchilar

Kuzatuvchilar reaktiv holatdagi o'zgarishlarga reaksiya bildirish imkonini beradi. Composition API kuzatuvchilarni yaratishning ikkita asosiy usulini taqdim etadi: watch va watchEffect.

watch yordamida misol:

import { ref, watch } from 'vue'

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

    watch(
      count,
      (newValue, oldValue) => {
        console.log(`Hisob ${oldValue} dan ${newValue} ga o'zgardi`)
      }
    )

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

    return {
      count,
      increment
    }
  }
}

watchEffect yordamida misol:

import { ref, watchEffect } from 'vue'

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

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

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

    return {
      message,
      updateMessage
    }
  }
}

5. Hayotiy Sikl Ilgaklari

Composition API onMounted, onUpdated va onUnmounted kabi on bilan boshlanadigan funksiyalar orqali komponent hayotiy sikl ilgaklariga kirish imkonini beradi. Ushbu funksiyalar argument sifatida qayta chaqiruv funksiyasini oladi, bu funksiya tegishli hayotiy sikl ilgagi ishga tushirilganda bajariladi.

Misol:

import { onMounted, onUnmounted } from 'vue'

export default {
  setup() {
    onMounted(() => {
      console.log('Komponent o\'rnatildi')
    })

    onUnmounted(() => {
      console.log('Komponent o\'chirildi')
    })

    return {}
  }
}

Kompozitsiyalanadigan Funksiyalarni Yaratish

Composition API ning haqiqiy kuchi qayta ishlatiladigan kompozitsiyalanadigan funksiyalarni yaratish qobiliyatidan kelib chiqadi. Kompozitsiyalanadigan funksiya — bu shunchaki komponent mantiqining bir qismini o'z ichiga olgan va bir nechta komponentlarda ishlatilishi mumkin bo'lgan reaktiv holat va funksiyalarni qaytaradigan funksiyadir.

Misol: Keling, sichqoncha pozitsiyasini kuzatuvchi kompozitsiyalanadigan funksiya yaratamiz:

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
  }
}

Endi siz ushbu kompozitsiyalanadigan funksiyani istalgan komponentda ishlatishingiz mumkin:

import { useMousePosition } from './useMousePosition'

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

    return {
      x,
      y
    }
  }
}

Amaliy Misollar va Qo'llash Holatlari

Keling, Composition API ni real hayotiy stsenariylarda qanday ishlatish mumkinligini ko'rsatadigan ba'zi amaliy misollarni o'rganamiz:

1. Ma'lumotlarni Olish

API dan ma'lumotlarni olish uchun kompozitsiyalanadigan funksiya yaratish keng tarqalgan holatdir. Bu sizga bir xil ma'lumotlarni olish mantiqini bir nechta komponentlarda qayta ishlatishga imkon beradi.

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
  }
}

Keyin ushbu kompozitsiyalanadigan funksiyani komponentlaringizda quyidagicha ishlatishingiz mumkin:

import { useFetch } from './useFetch'

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

    return {
      data,
      error,
      loading
    }
  }
}

2. Formani Tasdiqlash

Formani tasdiqlash — bu Composition API juda foydali bo'lishi mumkin bo'lgan yana bir soha. Siz tasdiqlash mantiqini o'z ichiga olgan kompozitsiyalanadigan funksiyalarni yaratishingiz va ularni turli formalarda qayta ishlatishingiz mumkin.

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 maydon to\'ldirilishi shart'
        break
      } else if (rule === 'email' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
        error = 'Email formati noto\'g\'ri'
        break
      }
    }

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

  return {
    errors,
    validateField
  }
}

Komponentda foydalanish:

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. Foydalanuvchi Autentifikatsiyasini Boshqarish

Autentifikatsiya mantiqi ko'pincha murakkab bo'lishi va bir nechta komponentlarda takrorlanishi mumkin. Composition API sizga barcha autentifikatsiya mantiqini o'z ichiga olgan kompozitsiyalanadigan funksiya yaratish va komponentlaringiz uchun toza API taqdim etish imkonini beradi.

Misol: (Soddalashtirilgan)

import { ref } from 'vue'

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

  const login = async (username, password) => {
    // API chaqiruvini simulyatsiya qilish
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = true
    user.value = { username }
  }

  const logout = async () => {
    // API chaqiruvini simulyatsiya qilish
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = false
    user.value = null
  }

  return {
    isLoggedIn,
    user,
    login,
    logout
  }
}

Composition API dan foydalanishning eng yaxshi amaliyotlari

Composition API dan maksimal darajada foydalanish uchun quyidagi eng yaxshi amaliyotlarni ko'rib chiqing:

Umumiy xatolar va ulardan qanday qochish kerak

Composition API ko'plab afzalliklarni taklif qilsa-da, e'tiborga olinishi kerak bo'lgan ba'zi umumiy xatolar ham mavjud:

Composition API va Global Jamoalar

Composition API global dasturlash jamoalari ichida hamkorlikni quyidagilar orqali rivojlantiradi:

Xulosa

Vue.js 3 Composition API — bu sizning Vue ilovalaringizning tashkil etilishi, qayta ishlatilishi va sinovdan o'tkazilishini sezilarli darajada yaxshilashi mumkin bo'lgan kuchli vositadir. Ushbu chuqur o'rganishda bayon etilgan asosiy tushunchalarni tushunib va eng yaxshi amaliyotlarga rioya qilib, siz global auditoriya uchun yanada qo'llab-quvvatlanadigan va kengaytiriladigan ilovalar yaratish uchun Composition API dan foydalanishingiz mumkin. Composition API ni qabul qiling va Vue.js 3 ning to'liq salohiyatini oching.

Sizni o'z loyihalaringizda Composition API bilan tajriba o'tkazishga va u taqdim etadigan keng imkoniyatlarni o'rganishga undaymiz. Dasturlashdan zavqlaning!