Composable
Composable
useSkeletonizer()
const skeletonizer = useSkeletonizer()
skeletonizer.enable() // attiva la modalità skeleton globalmente
skeletonizer.disable() // la disattiva
skeletonizer.toggle() // la inverte; restituisce il nuovo booleano
skeletonizer.isEnabled // ComputedRef<boolean>
skeletonizer.config // configurazione risolta reattiva
skeletonizer.stats // statistiche di runtime reattive
skeletonizer.refresh() // riscansiona tutti gli host montati
skeletonizer.scan() // riscansiona; restituisce { nodes, svg, cacheHit }
skeletonizer.setTheme({ baseColor: '#ddd', highlightColor: '#fff' })
skeletonizer.setAnimation('pulse')
skeletonizer.registerAnimation({ name: 'blink', css: '…' })
skeletonizer.config.renderMode // sempre 'svg' (sola lettura)
skeletonizer.engine // lo SkeletonEngine per-app
scan() esegue la pipeline (misura → render dell'overlay SVG) e restituisce un riepilogo del
risultato:
const { nodes, svg, cacheHit } = skeletonizer.scan()
// nodes — ScannedNode[] misurati per questo host (DOMRect, relativi all'host)
// svg — l'elemento <svg> overlay generato (o il suo markup)
// cacheHit — true quando il blueprint SVG è stato servito dalla cache di layout
Funziona a qualsiasi scope — globale, per pagina, per componente o per contenitore — perché ogni
controllo passa per un singolo store reattivo a cui ogni host <Skeletonizer> si sottoscrive.
stats
const { stats } = useSkeletonizer()
// { hosts, bones, ignored, scans, lastScanMs, enabled,
// renderMode, score, fps, animationTier, memoryMB,
// cacheHits, cacheMisses, degraded, timings }
// timings = { scanMs, renderMs, totalMs }
Statistiche di runtime reattive, esposte anche nella scheda DevTools. renderMode è
sempre 'svg'. I campi di Step 3 (score, fps, animationTier, contatori di cache…) vengono
popolati dal motore adattivo quando è attivo.
useSkeletonPerformance()
La superficie avanzata di performance / DevTools — telemetria, modalità Explain e la classifica dei colli di bottiglia, più i controlli a runtime. Alimenta una dashboard diagnostica (e il Performance Lab).
const perf = useSkeletonPerformance()
perf.stats // lo stesso oggetto stats reattivo
perf.telemetry() // { avgTotalMs, avgScanMs, cacheHitRatio, … }
perf.series('fps') // number[] per una sparkline
perf.explanations() // decisioni del motore in linguaggio naturale (Explain)
perf.lastExplanation // ComputedRef<SkeletonExplainEntry | null>
perf.bottlenecks() // host ordinati per costo di skeletonizzazione
perf.cacheHitRatio // ComputedRef<number> in [0,1]
perf.blueprint() // SvgBlueprint | null — l'SVG Blueprint Inspector
perf.engine // lo SkeletonEngine per-app
blueprint()
Restituisce il Blueprint SVG corrente per l'host attivo (o null quando non c'è nulla di
skeletonizzato) — la descrizione serializzabile dell'overlay generato: il viewBox bloccato sul
bounding box dell'host, l'id del gradiente condiviso (sk-shimmer-{uid}) e l'elenco delle forme
(<rect> / <circle>) con le loro coordinate relative all'host. Alimenta l'SVG Blueprint
Inspector nei DevTools, così puoi leggere il vettore esatto prodotto dal motore e verificare i
cache hit.
const bp = perf.blueprint()
// { uid, viewBox, gradientId, shapes: [{ kind: 'rect' | 'circle', x, y, … }], cached }
Data composable skeleton-aware
Rispecchiano i data composable di Nuxt e, quando skeleton: true (il predefinito), attivano lo
skeleton globale mentre la richiesta è in corso e lo disattivano al termine — con conteggio dei
riferimenti, così le richieste concorrenti si compongono correttamente.
const { data } = await useSkeletonFetch('/api/users', { skeleton: true })
Wrapper disponibili:
useSkeletonFetch— avvolgeuseFetchuseSkeletonLazyFetch— avvolgeuseLazyFetchuseSkeletonAsyncData— avvolgeuseAsyncDatauseSkeletonLazyAsyncData— avvolgeuseLazyAsyncData
Passa { skeleton: false } per escludere una singola chiamata. Qualsiasi <Skeletonizer> senza un
:enabled esplicito segue questo stato globale.
Preferisci il controllo esplicito? Collega
:enableda un refpending— vedi Integrazione Nuxt.