Vodiči · 08
Performanse i reprodukcija
Kako Animated izbjegava posao u svakom kadru, kako provjeriti koji put element koristi i kako su izmjereni brojevi na početnoj stranici.
Tri puta reprodukcije
Animated bira put za svako svojstvo. API se ne mijenja s putem.
| Put | Kada | Posao po kadru |
|---|---|---|
| browser | Konačni pokret transforma i opacityja na elementima Animated.<tag>, uključujući opruge | Nikakav u JavaScriptu stranice |
| css | Točne krivulje koje preglednik može izraziti dijeljenim CSS keyframes | Nikakav u JavaScriptu stranice |
| js | Obične style varijable, unos, vlastiti izračuni i granice sekvenci | Jedan zapis po vrijednosti, bez Reactova renderiranja |
Jedna vrijednost, mnogo elemenata
Izvedenice vrijednosti hooka su izrazi calc(). Sa scope jedan zapis varijable po kadru upravlja svim elementima u spremniku.
Priprema primjera…
Provjera puta
inspect(element) vraća driver i razlog fallbacka za svako animirano svojstvo tijekom stvarnog izvođenja.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsPočinje od prvog kadra
Kad zadatak koji pokreće pokret zauzme glavnu nit, primjerice hidratacija ili velik commit, pokret se ponovno pokreće nakon što taj posao završi umjesto da se pojavi već odmaknut. Pokretanje na skrivenoj stranici završava u pozadini.
Kako su izmjereni brojevi na početnoj stranici
Svaki scenarij pokrenut je na svježoj stranici nakon jednog zagrijavanja, s tri zabilježena uzorka, a navodi se medijan. Vrijeme JavaScripta je vrijeme provedeno u callbackovima animation framea dok pokret traje. Isključuje style, layout i paint, koje preglednik obavlja uz svaki pristup, pa nije mjera ukupnog CPU-a ni broja kadrova.
Reprodukcija u pregledniku ne čini layout, paint, compositing ni memoriju besplatnima. Mjerite stvarni zaslon na uređajima koje podržavate.
| Scenarij | Postavka | Rezultat |
|---|---|---|
| 400 Animated.div elements move translateX and fade in (timing, 1800 ms) | seed/pose/tempo on Animated.div; 800 browser animations | 0.00 ms |
| One useAnimated value drives 10,000 elements in ordinary style (loop, 1200 ms) | transform and opacity as calc() of one CSS variable written on a scope element | 0.13 ms |
2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K