Przewodniki · 08
Wydajność i odtwarzanie
Jak Animated unika pracy w każdej klatce, jak sprawdzić, której ścieżki używa element, i jak zmierzono liczby na stronie głównej.
Trzy ścieżki odtwarzania
Animated wybiera ścieżkę dla każdej właściwości. API nie zmienia się wraz ze ścieżką.
| Ścieżka | Kiedy | Praca na klatkę |
|---|---|---|
| browser | Skończony ruch transform i opacity na elementach Animated.<tag>, łącznie ze sprężynami | Brak w kodzie JavaScript strony |
| css | Dokładne krzywe, które przeglądarka może wyrazić wspólnymi CSS keyframes | Brak w kodzie JavaScript strony |
| js | Zwykłe zmienne style, wejście, własne obliczenia i granice sekwencji | Jeden zapis na wartość, bez renderu React |
Jedna wartość, wiele elementów
Pochodne wartości hooka to wyrażenia calc(). Z scope jeden zapis zmiennej na klatkę steruje każdym elementem w kontenerze.
Przygotowywanie przykładu…
Sprawdź ścieżkę
inspect(element) zwraca sterownik i powód fallbacku dla każdej animowanej właściwości podczas rzeczywistego działania.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsStartuje od pierwszej klatki
Gdy zadanie uruchamiające ruch zajmuje główny wątek, jak hydratacja czy duże zatwierdzenie, ruch startuje od nowa po zakończeniu tej pracy, zamiast pojawić się już zaawansowany. Start na ukrytej stronie kończy się w tle.
Jak zmierzono liczby na stronie głównej
Każdy scenariusz uruchomiono na świeżej stronie po jednej rozgrzewce, z trzema zarejestrowanymi próbkami; podajemy medianę. Czas JavaScriptu to czas spędzony w callbackach animation frame, gdy trwa ruch. Nie obejmuje style, layout i paint, które przeglądarka wykonuje przy każdym podejściu, więc nie jest miarą całkowitego CPU ani liczby klatek.
Odtwarzanie w przeglądarce nie sprawia, że layout, paint, compositing i pamięć są darmowe. Mierz prawdziwy ekran na urządzeniach, które wspierasz.
| Scenariusz | Konfiguracja | Wynik |
|---|---|---|
| 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