Μειώστε τον κωδικό του boilerplate και κάντε τις εφαρμογές σας Vue πιο διατηρημένες χρησιμοποιώντας αυτήν την βολική εναλλακτική.

Το Vue προσφέρει διάφορους τρόπους διαχείρισης της ροής δεδομένων και της επικοινωνίας μεταξύ των στοιχείων. Μια κοινή πρόκληση ως προγραμματιστής του Vue είναι η διάτρηση προπαγίδων, όπου μεταβιβάζετε δεδομένα μέσω διαφόρων επιπέδων στοιχείων, οδηγώντας σε μια πολύπλοκη και λιγότερο διατηρήσιμη βάση κώδικα.

Η Vue προσφέρει τον μηχανισμό παροχής/έγχυσης, μια καθαρή λύση για τη γεώτρηση στήριξης. Η παροχή/ένεση βοηθά στη διαχείριση της επικοινωνίας δεδομένων μεταξύ των γονέων και των βαθιά ένθετων στοιχείων του παιδιού.

Κατανόηση του προβλήματος της διάτρησης στηρίγματος

Πριν εμβαθύνετε στη λύση παροχής/ένεσης, είναι σημαντικό να κατανοήσετε το ζήτημα. Η διάτρηση στηρίγματος πραγματοποιείται όταν χρειάζεται να μεταβιβάσετε δεδομένα από ένα γονικό εξάρτημα ανώτατου επιπέδου σε ένα βαθιά ένθετο θυγατρικό εξάρτημα.

Τα ενδιάμεσα στοιχεία αυτής της ιεραρχίας πρέπει να λαμβάνουν και να μεταβιβάζουν τα δεδομένα, ακόμα κι αν δεν τα χρησιμοποιούν οι ίδιοι. Για να μεταβιβάσετε δεδομένα από ένα γονικό στοιχείο σε ένα θυγατρικό στοιχείο, θα χρειαστεί να το κάνετε

instagram viewer
περάστε αυτά τα δεδομένα ως στηρίγματα στα στοιχεία Vue σας.

Εξετάστε την ακόλουθη ιεραρχία στοιχείων ως παράδειγμα:

  • App
    • ParentComponent
      • ChildComponent
        • GrandChildComponent

Ας υποθέσουμε δεδομένα από το App συστατικό πρέπει να φτάσει στο GrandChildComponent. Σε αυτήν την περίπτωση, θα πρέπει να το περάσετε μέσω των δύο ενδιάμεσων στοιχείων χρησιμοποιώντας στηρίγματα, ακόμα κι αν αυτά τα στοιχεία δεν χρειάζονται τα ίδια τα δεδομένα για να λειτουργήσουν σωστά. Αυτό μπορεί να οδηγήσει σε διογκωμένο κώδικα που είναι πιο δύσκολο να εντοπιστεί.

Τι είναι Παροχή/Ένεση;

Το Vue αντιμετωπίζει αυτό το ζήτημα με το παρέχω/ενίω χαρακτηριστικό, το οποίο επιτρέπει σε ένα μητρικό στοιχείο να παρέχει δεδομένα ή λειτουργίες στα συνθετικά του στοιχεία, ανεξάρτητα από το πόσο βαθιά ένθετα είναι. Αυτή η λύση απλοποιεί την κοινή χρήση δεδομένων και βελτιώνει την οργάνωση κώδικα.

Στοιχείο παρόχου

Ένα στοιχείο παρόχου σκοπεύει να μοιραστεί δεδομένα ή μεθόδους με τους απογόνους του. Χρησιμοποιεί το προμηθεύω επιλογή να κάνει αυτά τα δεδομένα διαθέσιμα στα παιδιά του. Ακολουθεί ένα παράδειγμα στοιχείου παρόχου:


<template>
<div>

<ParentComponent/>
div>
template>

<scriptsetup>
import { provide } from 'vue';
import ParentComponent from './components/ParentComponent.vue';

const greeting = 'Hello from Provider';

provide('greeting', greeting);
script>

Αυτό το μπλοκ κώδικα εμφανίζει ένα στοιχείο παρόχου, App, που παρέχει α χαιρετισμός μεταβλητή σε όλα τα απόγονα συστατικά του. Για να παρέχετε μια μεταβλητή, πρέπει να ορίσετε ένα κλειδί. Η ρύθμιση του κλειδιού με το ίδιο όνομα με τη μεταβλητή βοηθά να διατηρήσετε τον κώδικά σας διατηρήσιμο.

Συστατικά απόγονος

Τα εξαρτήματα απόγονος είναι συστατικά μέσα σε μια ένθετη δομή. Μπορούν να εγχύσουν και να χρησιμοποιήσουν τα παρεχόμενα δεδομένα στην παρουσία τους. Δείτε πώς γίνεται:

<scriptsetup>
import { inject } from 'vue';

const injectedData = inject('greeting');
script>

Το συστατικό απόγονος εισάγει τα παρεχόμενα δεδομένα και μπορεί να έχει πρόσβαση σε αυτά μέσα στο πρότυπό του ως τοπικά καθορισμένη μεταβλητή.

Τώρα, σκεφτείτε την παρακάτω εικόνα:

Σε αυτήν την εικόνα, μπορείτε να δείτε μια ιεραρχία τεσσάρων στοιχείων, ξεκινώντας με ένα ριζικό στοιχείο που χρησιμεύει ως το σημείο εκκίνησης. Τα άλλα στοιχεία φωλιάζουν μέσα στην ιεραρχία, καταλήγοντας στο Εγγόνι συστατικό.

Το στοιχείο GrandChild λαμβάνει τα δεδομένα που παρέχει το στοιχείο App. Με αυτόν τον μηχανισμό στη θέση του, μπορείτε να αποφύγετε τη διαβίβαση δεδομένων μέσω του Μητρική εταιρεία και Παιδί στοιχεία, καθώς αυτά τα στοιχεία δεν χρειάζονται τα δεδομένα για να λειτουργήσουν σωστά.

Παροχή δεδομένων σε επίπεδο εφαρμογής (Παγκόσμιο).

Μπορείτε να παρέχετε δεδομένα σε επίπεδο εφαρμογής με την παροχή/ένεση του Vue. Αυτή είναι μια συνηθισμένη περίπτωση χρήσης για κοινή χρήση δεδομένων και διαμόρφωσης μεταξύ διαφορετικών στοιχείων εντός της εφαρμογής Vue.

Ακολουθεί ένα παράδειγμα για το πώς μπορείτε να παρέχετε δεδομένα σε επίπεδο εφαρμογής:

// main.js

import { createApp } from'vue'
import App from'./App.vue'

const globalConfig = {
apiUrl: 'https://example.com/api',
authKey: 'my-secret-key',
// Other configuration settings...
};

app.provide('globalConfig', globalConfig);

createApp(App).mount('#app')

Ας υποθέσουμε ότι έχετε μια εφαρμογή που απαιτεί ένα αντικείμενο καθολικής διαμόρφωσης που περιέχει Διεπαφή προγραμματισμού εφαρμογών (API) τελικά σημεία, πληροφορίες ελέγχου ταυτότητας χρήστη και άλλες ρυθμίσεις.

Μπορείτε να το επιτύχετε παρέχοντας τα δεδομένα διαμόρφωσης στο στοιχείο ανώτατου επιπέδου, συνήθως στο δικό σας main.js αρχείο, επιτρέποντας σε άλλα στοιχεία να το κάνουν έγχυση και χρήση:

<template>
<div>
<h1>API Settingsh1>
<p>API URL: {{ globalConfig.apiUrl }}p>
<p>Authentication Key: {{ globalConfig.authKey }}p>
div>
template>

<scriptsetup>
import { inject } from 'vue';

const globalConfig = inject('globalConfig');
script>

Το παραπάνω στοιχείο χρησιμοποιεί το κάνω ένεση λειτουργία για πρόσβαση στο globalConfig αντικείμενο, το οποίο παρέχει η εφαρμογή σε παγκόσμιο επίπεδο. Μπορείτε να αποκτήσετε πρόσβαση σε οποιεσδήποτε ιδιότητες ή ρυθμίσεις από το globalConfig παρεμβάλλοντας ή δεσμεύοντας αυτές τις ιδιότητες διαφορετικές τεχνικές δέσμευσης δεδομένων στο Vue εντός του συστατικού.

Οφέλη και χρήσεις του Provide and Inject

Ακολουθούν ορισμένα οφέλη και σημαντικές χρήσεις για τη δυνατότητα παροχής/εισαγωγής κατά τη δημιουργία εφαρμογών ιστού στο Vue.

Καθαρότερος και βελτιστοποιημένος κώδικας απόδοσης

Χρησιμοποιώντας παρέχω/ενίω, καταργείτε την ανάγκη για ενδιάμεσα στοιχεία να μεταδίδουν δεδομένα που δεν χρησιμοποιούν. Αυτό έχει ως αποτέλεσμα πιο καθαρό και πιο διατηρήσιμο κώδικα, μειώνοντας τις περιττές δηλώσεις prop.

Επίσης, το σύστημα αντιδραστικότητας του Vue διασφαλίζει ότι τα στοιχεία αποδίδονται εκ νέου μόνο όταν αλλάζουν οι εξαρτήσεις τους. Η παροχή/ένεση επιτρέπει την αποτελεσματική κοινή χρήση των δεδομένων, γεγονός που μπορεί να οδηγήσει σε βελτιστοποιήσεις απόδοσης μειώνοντας τις περιττές εκ νέου απόδοση.

Βελτιωμένη ενθυλάκωση εξαρτημάτων

Η παροχή/ένεση προάγει την καλύτερη ενθυλάκωση συστατικών. Τα θυγατρικά στοιχεία χρειάζεται μόνο να ανησυχούν για τα δεδομένα που χρησιμοποιούν ρητά, μειώνοντας την εξάρτησή τους από τη συγκεκριμένη δομή δεδομένων των μητρικών στοιχείων.

Εξετάστε ένα στοιχείο επιλογής ημερομηνίας που βασίζεται σε τοπικές ρυθμίσεις μορφής ημερομηνίας. Αντί να μεταβιβάζετε αυτές τις ρυθμίσεις ως στηρίγματα, μπορείτε να τις παρέχετε στο γονικό στοιχείο και να τις εισάγετε μόνο στο στοιχείο επιλογής ημερομηνίας. Αυτό οδηγεί σε σαφέστερο διαχωρισμό των ανησυχιών.

Ενεση εξάρτησης

Η παροχή/ένεση μπορεί να χρησιμεύσει ως μια απλή μορφή έγχυσης εξάρτησης, κάνοντας καθολικές υπηρεσίες και ρυθμίσεις—όπως Πελάτες API, τελικά σημεία, προτιμήσεις χρήστη ή χώροι αποθήκευσης δεδομένων — άμεσα διαθέσιμα σε οποιοδήποτε στοιχείο που τα χρειάζεται. Αυτό διασφαλίζει συνεπείς διαμορφώσεις σε όλη την εφαρμογή σας.

Βασικά σημεία που πρέπει να λάβετε υπόψη κατά τη χρήση του Prode and Inject

Ενώ το παρέχω/ενίω Ο μηχανισμός προσφέρει πολλά πλεονεκτήματα, θα πρέπει να τον χρησιμοποιείτε προσεκτικά για να αποφύγετε ανεπιθύμητες παρενέργειες.

  • Χρήση παρέχω/ενίω για την κοινή χρήση σημαντικών δεδομένων ή λειτουργιών που απαιτούνται σε μια ιεραρχία στοιχείων, όπως κλειδιά διαμόρφωσης ή API. Η υπερβολική χρήση του μπορεί να κάνει τις σχέσεις των εξαρτημάτων σας πολύ περίπλοκες.
  • Τεκμηριώστε τι παρέχει το εξάρτημα παρόχου και ποια απόγονα συστατικά πρέπει να εγχυθούν. Αυτό βοηθά στην κατανόηση και τη διατήρηση των στοιχείων σας, ειδικά όταν εργάζεστε σε ομάδες.
  • Να είστε προσεκτικοί σχετικά με τη δημιουργία βρόχων εξάρτησης, όπου ένα θυγατρικό στοιχείο παρέχει κάτι που εισάγει ένα γονικό στοιχείο. Αυτό θα οδηγήσει σε σφάλματα και απροσδόκητη συμπεριφορά.

Είναι το Provide/Inject η καλύτερη επιλογή για State Management στο Vue;

Η παροχή/ένεση είναι μια άλλη χρήσιμη δυνατότητα στο Vue για τη διαχείριση της ροής δεδομένων και της κατάστασης σε όλα τα στοιχεία. Η παροχή/ένεση συνοδεύεται από μειονεκτήματα. Η παροχή/ένεση μπορεί να οδηγήσει σε προκλήσεις στον εντοπισμό σφαλμάτων, τη δοκιμή και τη διατήρηση εφαρμογών μεγάλης κλίμακας.

Χρησιμοποιώντας το Pinia, το επίσημο πλαίσιο διαχείρισης κράτους του Vue, θα ήταν καλύτερο να χειριστείτε πολύπλοκες καταστάσεις στην εφαρμογή Vue. Το Pinia παρέχει ένα κεντρικό κατάστημα και μια προσέγγιση με ασφάλεια τύπου στη διαχείριση κατάστασης, καθιστώντας την ανάπτυξη εφαρμογών Vue πιο προσιτή.