Η βελτιστοποίηση απόδοσης Vue περιλαμβάνει μέγεθος πακέτου, αποτελεσματικότητα απόδοσης και κόστος αντιδραστικότητας. Ακολουθούν τεχνικές με τη μεγαλύτερη επίδραση.
1. Code splitting / lazy loading
routes = [{ : , : () }];
= ( ());
Η βελτιστοποίηση απόδοσης Vue περιλαμβάνει μέγεθος πακέτου, αποτελεσματικότητα απόδοσης και κόστος αντιδραστικότητας. Ακολουθούν τεχνικές με τη μεγαλύτερη επίδραση.
routes = [{ : , : () }];
= ( ());
Η μεγαλύτερη νίκη αρχικής φόρτωσης: μην αποστείλετε κώδικα που ο χρήστης δεν χρειάζεται ακόμα.
<div v-show="tab === 'a'"> <!-- toggled often → cheap CSS flip -->
<div v-if="rarelyShown"> <!-- rarely rendered → skip building it -->
<li v-for="item in items" :key="item.id"> <!-- enables efficient DOM reuse/diffing -->
import { shallowRef, shallowReactive } from "vue";
// for large objects you replace wholesale (or 3rd-party instances), skip deep tracking
const bigData = shallowRef(hugeObject); // only .value reassignment is reactive
Object.freeze(staticConfig); // never-changing data → no reactivity overhead
Η βαθιά αντιδραστικότητα σε τεράστια αντικείμενα είναι δαπανηρή. shallowRef/shallowReactive/Object.freeze αποφεύγουν την παρακολούθηση δεδομένων που δεν τα χρειάζονται.
<p>{{ expensiveComputed }}</p> <!-- cached, recomputes only on dependency change -->
<header v-once>{{ siteName }}</header> <!-- render once, never update -->
<div v-memo="[item.id]">...</div> <!-- re-render only if item.id changes -->
Rendering 10,000 rows kills performance → use vue-virtual-scroller / TanStack Virtual
to render only the visible rows.
Vue DevTools (component render timings, why a component re-rendered)
build output / rollup-plugin-visualizer → bundle composition
Lighthouse → Core Web Vitals
Η Vue είναι γρήγορη από προεπιλογή, αλλά οι μεγάλες εφαρμογές χρειάζονται σκόπιμη βελτιστοποίηση: lazy-load για σμίκρυνση πακέτων, επιλέξτε v-if/v-show σωστά, χρησιμοποιήστε σταθερά κλειδιά, αποφύγετε υπερβολική αντιδραστικότητα σε μεγάλα δεδομένα (shallowRef/freeze), cache με computed/v-memo και εικονικοποιήστε μεγάλες λίστες.
Το να ξέρετε ποια τεχνική αντιμετωπίζει ποιο λαιμό—και να μετράτε με DevTools/Lighthouse αντί να μαντεύετε—είναι αυτό που κρατά μια αναπτυσσόμενη εφαρμογή Vue ανταποκρίσιμη.