Eesti

Avastage Vue.js 3 Composition API põhjalikult. Õppige looma korduvkasutatavaid, hooldatavaid ja testitavaid Vue.js rakendusi praktiliste näidete ja parimate praktikate abil arendajatele üle maailma.

Vue.js 3 Composition API: Süvaülevaade globaalsetele arendajatele

Vue.js on kiiresti saanud populaarseks valikuks moodsate veebirakenduste loomisel tänu oma lihtsasti omandatavale õppimiskõverale ja võimsatele funktsioonidele. Vue.js 3 viib selle veelgi kaugemale, tutvustades Composition API-d, mis on uus viis komponendi loogika organiseerimiseks. See süvaülevaade pakub põhjalikku juhendit Composition API mõistmiseks ja tõhusaks kasutamiseks, andes teile oskused luua paremini hooldatavaid, korduvkasutatavaid ja testitavaid Vue rakendusi.

Mis on Composition API?

Composition API on kogum API-sid, mis võimaldavad meil luua Vue komponente, kasutades imporditud funktsioone valikute deklareerimise asemel. Sisuliselt võimaldab see grupeerida seotud loogikat kokku, sõltumata sellest, kus see mallis ilmub. See on vastandiks Options API-le (data, methods, computed, watch), mis sunnib teid organiseerima koodi nende eelnevalt määratletud kategooriate alusel. Mõelge Options API-st kui koodi organiseerimisest selle järgi, *mis* see on (andmed, meetod jne), samas kui Composition API laseb teil organiseerida koodi selle järgi, *mida see teeb*.

Composition API tuum keerleb setup() funktsiooni ümber. See funktsioon on sisenemispunkt Composition API kasutamiseks komponendis. setup() funktsiooni sees saate defineerida reaktiivset olekut, arvutatud omadusi, meetodeid ja elutsükli konkse, kasutades komponeeritavaid funktsioone.

Miks kasutada Composition API-d?

Composition API pakub mitmeid eeliseid traditsioonilise Options API ees, eriti suuremate ja keerukamate rakenduste puhul:

Põhimõistete mõistmine

Sukeldume Composition API aluseks olevatesse põhimõistetesse:

1. setup()

Nagu varem mainitud, on setup() sisenemispunkt Composition API kasutamiseks. See on komponendi valik, mis käivitatakse enne komponendi loomist. setup() funktsiooni sees saate defineerida reaktiivset olekut, arvutatud omadusi, meetodeid ja elutsükli konkse ning seejärel tagastada objekti, mis sisaldab väärtusi, mida soovite mallile kättesaadavaks teha.

Näide:

import { ref } from 'vue'

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

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

    return {
      count,
      increment
    }
  }
}

Selles näites kasutame ref-i, et luua reaktiivne muutuja nimega count. Samuti defineerime meetodi nimega increment, mis suurendab count-i väärtust. Lõpuks tagastame objekti, mis sisaldab count-i ja increment-i, mis muudab need komponendi mallis kättesaadavaks.

2. Reaktiivne olek ref ja reactive abil

Composition API pakub kahte põhilist funktsiooni reaktiivse oleku loomiseks: ref ja reactive.

Näide ref-i kasutamisest:

import { ref } from 'vue'

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

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

    return {
      message,
      updateMessage
    }
  }
}

Näide reactive-i kasutamisest:

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. Arvutatud omadused computed abil

Arvutatud omadused on väärtused, mis tuletatakse teisest reaktiivsest olekust. Neid uuendatakse automaatselt, kui nende sõltuvused muutuvad. Funktsioon computed võtab argumendiks getteri funktsiooni ja tagastab ainult loetava reaktiivse ref-i.

Näide:

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

Selles näites on fullName arvutatud omadus, mis sõltub firstName-ist ja lastName-ist. Iga kord, kui firstName või lastName muutub, uuendatakse fullName automaatselt.

4. Jälgijad watch ja watchEffect abil

Jälgijad võimaldavad teil reageerida reaktiivse oleku muutustele. Composition API pakub kahte peamist viisi jälgijate loomiseks: watch ja watchEffect.

Näide watch-i kasutamisest:

import { ref, watch } from 'vue'

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

    watch(
      count,
      (newValue, oldValue) => {
        console.log(`Loendur muutus ${oldValue}-lt ${newValue}-le`)
      }
    )

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

    return {
      count,
      increment
    }
  }
}

Näide watchEffect-i kasutamisest:

import { ref, watchEffect } from 'vue'

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

    watchEffect(() => {
      console.log(`Sõnum on: ${message.value}`)
    })

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

    return {
      message,
      updateMessage
    }
  }
}

5. Elutsükli konksud

Composition API pakub juurdepääsu komponendi elutsükli konksudele funktsioonide kaudu, mis algavad on-ga, näiteks onMounted, onUpdated ja onUnmounted. Need funktsioonid võtavad argumendiks tagasikutse, mis käivitatakse, kui vastav elutsükli konks käivitub.

Näide:

import { onMounted, onUnmounted } from 'vue'

export default {
  setup() {
    onMounted(() => {
      console.log('Komponent on paigaldatud')
    })

    onUnmounted(() => {
      console.log('Komponent on eemaldatud')
    })

    return {}
  }
}

Komponeeritavate funktsioonide loomine

Composition API tegelik jõud tuleneb võimest luua korduvkasutatavaid komponeeritavaid funktsioone. Komponeeritav funktsioon on lihtsalt funktsioon, mis kapseldab tüki komponendi loogikast ning tagastab reaktiivse oleku ja funktsioonid, mida saab kasutada mitmes komponendis.

Näide: Loome komponeeritava funktsiooni, mis jälgib hiire asukohta:

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

Nüüd saate seda komponeeritavat funktsiooni kasutada igas komponendis:

import { useMousePosition } from './useMousePosition'

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

    return {
      x,
      y
    }
  }
}

Praktilised näited ja kasutusjuhud

Uurime mõningaid praktilisi näiteid, kuidas Composition API-d saab kasutada reaalsetes stsenaariumides:

1. Andmete pärimine

Komponeeritava funktsiooni loomine andmete pärimiseks API-st on levinud kasutusjuht. See võimaldab teil taaskasutada sama andmete pärimise loogikat mitmes komponendis.

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

Seejärel saate seda komponeeritavat funktsiooni oma komponentides kasutada nii:

import { useFetch } from './useFetch'

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

    return {
      data,
      error,
      loading
    }
  }
}

2. Vormi valideerimine

Vormi valideerimine on veel üks valdkond, kus Composition API võib olla väga abiks. Saate luua komponeeritavaid funktsioone, mis kapseldavad valideerimisloogikat ja taaskasutada neid erinevates vormides.

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 = 'See väli on kohustuslik'
        break
      } else if (rule === 'email' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
        error = 'Vigane e-posti formaat'
        break
      }
    }

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

  return {
    errors,
    validateField
  }
}

Kasutamine komponendis:

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. Kasutaja autentimise haldamine

Autentimisloogika võib sageli olla keeruline ja dubleeritud mitmes komponendis. Composition API võimaldab teil luua komponeeritava funktsiooni, mis kapseldab kogu autentimisloogika ja pakub teie komponentidele puhta API kasutamiseks.

Näide: (Lihtsustatud)

import { ref } from 'vue'

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

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

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

  return {
    isLoggedIn,
    user,
    login,
    logout
  }
}

Parimad praktikad Composition API kasutamiseks

Et Composition API-st maksimumi võtta, arvestage järgmiste parimate tavadega:

Levinumad lõksud ja kuidas neid vältida

Kuigi Composition API pakub palju eeliseid, on ka mõningaid levinud lõkse, millest tuleks teadlik olla:

Composition API ja globaalsed meeskonnad

Composition API soodustab koostööd globaalsetes arendusmeeskondades, edendades:

Kokkuvõte

Vue.js 3 Composition API on võimas tööriist, mis võib oluliselt parandada teie Vue rakenduste organiseeritust, korduvkasutatavust ja testitavust. Mõistes põhimõisteid ja järgides selles süvaülevaates kirjeldatud parimaid tavasid, saate Composition API-d ära kasutada, et luua hooldatavamaid ja skaleeritavamaid rakendusi globaalsele publikule. Võtke Composition API omaks ja avage Vue.js 3 kogu potentsiaal.

Soovitame teil katsetada Composition API-d oma projektides ja avastada selle pakutavaid laialdasi võimalusi. Head kodeerimist!

Vue.js 3 Composition API: Süvaülevaade globaalsetele arendajatele | MLOG