Slovenščina

Raziščite Vue.js 3 Composition API v globino. Naučite se graditi ponovno uporabne, vzdržljive in preizkusljive aplikacije Vue.js s praktičnimi primeri in najboljšimi praksami za razvijalce po vsem svetu.

Vue.js 3 Composition API: Poglobljena analiza za globalne razvijalce

Vue.js je hitro postal priljubljena izbira za izgradnjo sodobnih spletnih aplikacij, zahvaljujoč svoji dostopni učni krivulji in zmogljivim funkcijam. Vue.js 3 to še nadgradi z uvedbo Composition API, novega načina za organizacijo vaše komponente logike. Ta poglobljena analiza ponuja celovit vodnik za razumevanje in učinkovito uporabo Composition API, ki vas opremi z veščinami za izgradnjo bolj vzdržljivih, ponovno uporabnih in preizkusljivih aplikacij Vue.

Kaj je Composition API?

Composition API je nabor API-jev, ki nam omogočajo ustvarjanje Vue komponent z uporabo uvoženih funkcij namesto deklariranja možnosti. V bistvu vam omogoča, da združite povezano logiko, ne glede na to, kje se pojavi v predlogi. To je v nasprotju z Options API (data, methods, computed, watch), ki vas sili, da organizirate kodo na podlagi teh vnaprej določenih kategorij. Pomislite na Options API kot na organiziranje kode glede na *kaj* je (podatki, metoda itd.), medtem ko vam Composition API omogoča organiziranje kode glede na *kaj počne*.

Jedro Composition API se vrti okoli funkcije setup(). Ta funkcija je vstopna točka za uporabo Composition API znotraj komponente. Znotraj setup() lahko definirate reaktivno stanje, izračunane lastnosti, metode in življenjske cikle s pomočjo sestavljivih funkcij.

Zakaj uporabljati Composition API?

Composition API ponuja več prednosti pred tradicionalnim Options API, zlasti za večje in bolj kompleksne aplikacije:

Razumevanje ključnih konceptov

Poglobimo se v ključne koncepte, ki podpirajo Composition API:

1. setup()

Kot že omenjeno, je setup() vstopna točka za uporabo Composition API. To je možnost komponente, ki se izvede pred ustvarjanjem komponente. Znotraj setup() definirate reaktivno stanje, izračunane lastnosti, metode in življenjske cikle, nato pa vrnete objekt, ki vsebuje vrednosti, ki jih želite izpostaviti predlogi.

Primer:

import { ref } from 'vue'

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

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

 return {
 count,
 increment
 }
 }
}

V tem primeru uporabljamo ref za ustvarjanje reaktivne spremenljivke, imenovane count. Prav tako definiramo metodo, imenovano increment, ki poveča vrednost count. Nazadnje vrnemo objekt, ki vsebuje count in increment, zaradi česar sta na voljo v predlogi komponente.

2. Reaktivno stanje z ref in reactive

Composition API ponuja dve glavni funkciji za ustvarjanje reaktivnega stanja: ref in reactive.

Primer uporabe ref:

import { ref } from 'vue'

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

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

 return {
 message,
 updateMessage
 }
 }
}

Primer uporabe 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. Izračunane lastnosti z computed

Izračunane lastnosti so vrednosti, ki izhajajo iz drugega reaktivnega stanja. Samodejno se posodabljajo, kadar se spremenijo njihove odvisnosti. Funkcija computed vzame getter funkcijo kot argument in vrne reaktivni ref samo za branje.

Primer:

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

V tem primeru je fullName izračunana lastnost, ki je odvisna od firstName in lastName. Kadarkoli se spremeni bodisi firstName bodisi lastName, se bo fullName samodejno posodobil.

4. Opazovalci z watch in watchEffect

Opazovalci vam omogočajo, da se odzovete na spremembe v reaktivnem stanju. Composition API ponuja dva glavna načina za ustvarjanje opazovalcev: watch in watchEffect.

Primer uporabe watch:

import { ref, watch } from 'vue'

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

 watch(
 count,
 (newValue, oldValue) => {
 console.log(`Števec se je spremenil iz $ {oldValue} v $ {newValue}`)
 }
 )

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

 return {
 count,
 increment
 }
 }
}

Primer uporabe watchEffect:

import { ref, watchEffect } from 'vue'

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

 watchEffect(() => {
 console.log(`Sporočilo je: $ {message.value}`)
 })

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

 return {
 message,
 updateMessage
 }
 }
}

5. Življenjski cikli

Composition API omogoča dostop do življenjskih ciklov komponente prek funkcij, ki se začnejo z on, kot so onMounted, onUpdated in onUnmounted. Te funkcije vzamejo povratni klic kot argument, ki bo izveden, ko se sproži ustrezen življenjski cikel.

Primer:

import { onMounted, onUnmounted } from 'vue'

export default {
 setup() {
 onMounted(() => {
 console.log('Komponenta je nameščena')
 })

 onUnmounted(() => {
 console.log('Komponenta je odstranjena')
 })

 return {}
 }
}

Ustvarjanje sestavljivih funkcij

Prava moč Composition API izhaja iz zmožnosti ustvarjanja ponovno uporabnih sestavljivih funkcij. Sestavljiva funkcija je preprosto funkcija, ki kapsulira del logike komponente in vrne reaktivno stanje in funkcije, ki jih je mogoče uporabiti v več komponentah.

Primer: Ustvarimo sestavljivo funkcijo, ki sledi položaju miške:

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

Zdaj lahko to sestavljivo funkcijo uporabite v kateri koli komponenti:

import { useMousePosition } from './useMousePosition'

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

 return {
 x,
 y
 }
 }
}

Praktični primeri in primeri uporabe

Raziščimo nekaj praktičnih primerov, kako se lahko Composition API uporablja v resničnih scenarijih:

1. Pridobivanje podatkov

Ustvarjanje sestavljive funkcije za pridobivanje podatkov iz API-ja je pogost primer uporabe. To vam omogoča, da ponovno uporabite isto logiko za pridobivanje podatkov v več komponentah.

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

To sestavljivo funkcijo lahko nato uporabite v svojih komponentah takole:

import { useFetch } from './useFetch'

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

 return {
 data,
 error,
 loading
 }
 }
}

2. Validacija obrazcev

Validacija obrazcev je še eno področje, kjer je lahko Composition API zelo koristen. Ustvarite lahko sestavljive funkcije, ki kapsulirajo logiko validacije in jih ponovno uporabite v različnih obrazcih.

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 = 'To polje je obvezno'
 break
 } else if (rule === 'email' && !/^\w[\w.]*@([\w-]+\.)+[\w-]{2,4}$/.test(value)) {
 error = 'Neveljavna oblika zapisa e-pošte'
 break
 }
 }

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

 return {
 errors,
 validateField
 }
}

Uporaba v komponenti:

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. Upravljanje avtentikacije uporabnikov

Logika avtentikacije je pogosto kompleksna in se podvaja v več komponentah. Composition API vam omogoča, da ustvarite sestavljivo funkcijo, ki kapsulira vso logiko avtentikacije in zagotavlja čist API za uporabo vaših komponent.

Primer: (Poenostavljeno)

import { ref } from 'vue'

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

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

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

 return {
 isLoggedIn,
 user,
 login,
 logout
 }
}

Najboljše prakse za uporabo Composition API

Da bi kar najbolje izkoristili Composition API, upoštevajte naslednje najboljše prakse:

Pogoste pasti in kako se jim izogniti

Čeprav Composition API ponuja številne prednosti, se je treba zavedati tudi nekaterih pogostih pasti:

Composition API in globalne ekipe

Composition API spodbuja sodelovanje znotraj globalnih razvojnih ekip s spodbujanjem:

Zaključek

Vue.js 3 Composition API je zmogljivo orodje, ki lahko znatno izboljša organizacijo, ponovno uporabnost in preizkusljivost vaših aplikacij Vue. Z razumevanjem ključnih konceptov in upoštevanjem najboljših praks, opisanih v tej poglobljeni analizi, lahko izkoristite Composition API za izgradnjo bolj vzdržljivih in razširljivih aplikacij za globalno občinstvo. Sprejmite Composition API in odklenite ves potencial Vue.js 3.

Spodbujamo vas, da eksperimentirate s Composition API v svojih projektih in raziščete obsežne možnosti, ki jih ponuja. Srečno kodiranje!