Lietuvių

Išsamiai išnagrinėkite Vue.js 3 Composition API. Sužinokite, kaip kurti daugkartinio naudojimo, prižiūrimas ir testuojamas Vue.js aplikacijas su praktiniais pavyzdžiais.

Vue.js 3 Composition API: Išsami analizė pasaulio programuotojams

Vue.js sparčiai tapo populiariu pasirinkimu kuriant modernias žiniatinklio aplikacijas dėl savo prieinamos mokymosi kreivės ir galingų funkcijų. Vue.js 3 žengia dar toliau, pristatydamas Composition API – naują būdą organizuoti jūsų komponentų logiką. Ši išsami analizė pateikia visapusišką vadovą, kaip efektyviai suprasti ir naudoti Composition API, suteikdama jums įgūdžių kurti lengviau prižiūrimas, daugkartinio naudojimo ir testuojamas Vue aplikacijas.

Kas yra Composition API?

Composition API – tai API rinkinys, leidžiantis mums kurti Vue komponentus naudojant importuotas funkcijas, o ne deklaruojant parinktis. Iš esmės, tai leidžia sugrupuoti susijusią logiką kartu, nepriklausomai nuo to, kur ji atsiranda šablone. Tai skiriasi nuo Options API (data, methods, computed, watch), kuris verčia organizuoti kodą pagal šias iš anksto nustatytas kategorijas. Pagalvokite apie Options API kaip apie kodo organizavimą pagal tai, *kas* tai yra (duomenys, metodas ir t. t.), o Composition API leidžia organizuoti kodą pagal tai, *ką jis daro*.

Composition API esmė sukasi aplink setup() funkciją. Ši funkcija yra įėjimo taškas, norint naudoti Composition API komponente. setup() viduje galite apibrėžti reaktyvią būseną, apskaičiuojamas savybes, metodus ir gyvavimo ciklo kabliukus (lifecycle hooks) naudojant komponuojamas funkcijas.

Kodėl verta naudoti Composition API?

Composition API siūlo keletą pranašumų, palyginti su tradiciniu Options API, ypač didesnėms ir sudėtingesnėms aplikacijoms:

Pagrindinių koncepcijų supratimas

Pasigilinkime į pagrindines koncepcijas, kuriomis grindžiamas Composition API:

1. setup()

Kaip minėta anksčiau, setup() yra įėjimo taškas naudojant Composition API. Tai komponento parinktis, kuri vykdoma prieš sukuriant komponentą. setup() viduje jūs apibrėžiate reaktyvią būseną, apskaičiuojamas savybes, metodus ir gyvavimo ciklo kabliukus, o tada grąžinate objektą su reikšmėmis, kurias norite atvaizduoti šablone.

Pavyzdys:

import { ref } from 'vue'

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

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

    return {
      count,
      increment
    }
  }
}

Šiame pavyzdyje mes naudojame ref, kad sukurtume reaktyvų kintamąjį, pavadintą count. Taip pat apibrėžiame metodą pavadinimu increment, kuris padidina count reikšmę. Galiausiai, grąžiname objektą, kuriame yra count ir increment, todėl jie tampa prieinami komponento šablone.

2. Reaktyvi būsena su ref ir reactive

Composition API suteikia dvi pagrindines funkcijas reaktyviai būsenai kurti: ref ir reactive.

Pavyzdys naudojant ref:

import { ref } from 'vue'

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

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

    return {
      message,
      updateMessage
    }
  }
}

Pavyzdys naudojant reactive:

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. Apskaičiuojamos savybės su computed

Apskaičiuojamos savybės yra reikšmės, kurios yra išvestos iš kitos reaktyvios būsenos. Jos automatiškai atnaujinamos, kai pasikeičia jų priklausomybės. Funkcija computed kaip argumentą priima geterio funkciją ir grąžina tik skaitomą reaktyvų ref.

Pavyzdys:

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

Šiame pavyzdyje fullName yra apskaičiuojama savybė, kuri priklauso nuo firstName ir lastName. Kai pasikeičia firstName arba lastName, fullName bus automatiškai atnaujinta.

4. Stebėtojai su watch ir watchEffect

Stebėtojai (watchers) leidžia reaguoti į reaktyvios būsenos pokyčius. Composition API suteikia du pagrindinius būdus stebėtojams kurti: watch ir watchEffect.

Pavyzdys naudojant watch:

import { ref, watch } from 'vue'

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

    watch(
      count,
      (newValue, oldValue) => {
        console.log(`Skaitliukas pasikeitė nuo ${oldValue} iki ${newValue}`)
      }
    )

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

    return {
      count,
      increment
    }
  }
}

Pavyzdys naudojant watchEffect:

import { ref, watchEffect } from 'vue'

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

    watchEffect(() => {
      console.log(`Pranešimas yra: ${message.value}`)
    })

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

    return {
      message,
      updateMessage
    }
  }
}

5. Gyvavimo ciklo kabliukai

Composition API suteikia prieigą prie komponento gyvavimo ciklo kabliukų (lifecycle hooks) per funkcijas, kurios prasideda on, pavyzdžiui, onMounted, onUpdated ir onUnmounted. Šios funkcijos kaip argumentą priima atgalinio ryšio funkciją, kuri bus įvykdyta, kai suveiks atitinkamas gyvavimo ciklo kabliukas.

Pavyzdys:

import { onMounted, onUnmounted } from 'vue'

export default {
  setup() {
    onMounted(() => {
      console.log('Komponentas primontuotas (mounted)')
    })

    onUnmounted(() => {
      console.log('Komponentas atjungtas (unmounted)')
    })

    return {}
  }
}

Komponuojamų funkcijų kūrimas

Tikroji Composition API galia atsiskleidžia per galimybę kurti daugkartinio naudojimo komponuojamas funkcijas. Komponuojama funkcija yra tiesiog funkcija, kuri apgaubia dalį komponento logikos ir grąžina reaktyvią būseną bei funkcijas, kurias galima naudoti keliuose komponentuose.

Pavyzdys: Sukurkime komponuojamą funkciją, kuri seka pelės poziciją:

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

Dabar galite naudoti šią komponuojamą funkciją bet kuriame komponente:

import { useMousePosition } from './useMousePosition'

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

    return {
      x,
      y
    }
  }
}

Praktiniai pavyzdžiai ir naudojimo atvejai

Panagrinėkime keletą praktinių pavyzdžių, kaip Composition API gali būti naudojamas realiose situacijose:

1. Duomenų gavimas

Komponuojamos funkcijos kūrimas duomenims iš API gauti yra įprastas naudojimo atvejis. Tai leidžia jums pakartotinai naudoti tą pačią duomenų gavimo logiką keliuose komponentuose.

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

Tada galite naudoti šią komponuojamą funkciją savo komponentuose taip:

import { useFetch } from './useFetch'

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

    return {
      data,
      error,
      loading
    }
  }
}

2. Formos patvirtinimas

Formos patvirtinimas yra dar viena sritis, kur Composition API gali būti labai naudinga. Galite sukurti komponuojamas funkcijas, kurios apima patvirtinimo logiką ir pakartotinai jas naudoti skirtingose formose.

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 = 'Šis laukas yra privalomas'
        break
      } else if (rule === 'email' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
        error = 'Neteisingas el. pašto formatas'
        break
      }
    }

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

  return {
    errors,
    validateField
  }
}

Naudojimas komponente:

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. Vartotojo autentifikavimo valdymas

Autentifikavimo logika dažnai gali būti sudėtinga ir dubliuojama keliuose komponentuose. Composition API leidžia sukurti komponuojamą funkciją, kuri apima visą autentifikavimo logiką ir suteikia švarų API jūsų komponentams naudoti.

Pavyzdys: (supaprastintas)

import { ref } from 'vue'

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

  const login = async (username, password) => {
    // Imituojamas API iškvietimas
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = true
    user.value = { username }
  }

  const logout = async () => {
    // Imituojamas API iškvietimas
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = false
    user.value = null
  }

  return {
    isLoggedIn,
    user,
    login,
    logout
  }
}

Geriausios praktikos naudojant Composition API

Norėdami maksimaliai išnaudoti Composition API, apsvarstykite šias geriausias praktikas:

Dažniausios klaidos ir kaip jų išvengti

Nors Composition API siūlo daug privalumų, yra ir keletas dažnų klaidų, kurių reikėtų saugotis:

Composition API ir globalios komandos

Composition API skatina bendradarbiavimą globaliose programuotojų komandose, skatindamas:

Išvada

Vue.js 3 Composition API yra galingas įrankis, kuris gali žymiai pagerinti jūsų Vue aplikacijų organizavimą, pakartotinį naudojimą ir testuojamumą. Suprasdami pagrindines koncepcijas ir laikydamiesi šiame išsamiame vadove aprašytų geriausių praktikų, galite išnaudoti Composition API, kad sukurtumėte lengviau prižiūrimas ir mastelį atitinkančias aplikacijas pasaulinei auditorijai. Priimkite Composition API ir atskleiskite visą Vue.js 3 potencialą.

Raginame jus eksperimentuoti su Composition API savo projektuose ir tyrinėti didžiules jo teikiamas galimybes. Sėkmingo programavimo!