Hướng dẫn · 08
Hiệu năng và cách phát
Cách Animated tránh công việc ở mỗi khung hình, cách kiểm tra phần tử dùng đường nào, và cách đo các con số trên trang chủ.
Ba đường phát
Animated chọn đường cho từng thuộc tính. API không đổi theo đường.
| Đường | Khi nào | Công việc mỗi khung hình |
|---|---|---|
| browser | Chuyển động transform và opacity có giới hạn trên phần tử Animated.<tag>, kể cả lò xo | Không có trong JavaScript của trang |
| css | Đường cong chính xác mà trình duyệt biểu diễn được bằng keyframe CSS dùng chung | Không có trong JavaScript của trang |
| js | Biến style thông thường, đầu vào, phép tính riêng và ranh giới của sequence | Một lần ghi cho mỗi giá trị, không render React |
Một giá trị, nhiều phần tử
Các giá trị suy ra từ giá trị hook là biểu thức calc(). Với scope, một lần ghi biến mỗi khung hình điều khiển mọi phần tử trong phần tử chứa.
Đang chuẩn bị ví dụ…
Kiểm tra đường đi
inspect(element) trả về driver và lý do fallback cho từng thuộc tính có hoạt ảnh trong một lần chạy thật.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsBắt đầu từ khung hình đầu tiên
Khi tác vụ khởi động chuyển động làm luồng chính bận, như hydrate hay một commit lớn, chuyển động sẽ bắt đầu lại khi công việc đó xong thay vì trông như đã chạy được một đoạn. Chuyển động khởi động trên trang bị ẩn sẽ hoàn tất ở chế độ nền.
Cách đo các con số trên trang chủ
Mỗi kịch bản chạy trên một trang mới sau một lượt khởi động, với ba mẫu được ghi lại và báo giá trị trung vị. Thời gian JavaScript là thời gian nằm trong các callback animation-frame khi chuyển động đang chạy. Nó không gồm style, bố cục và vẽ, những việc trình duyệt làm với mọi cách tiếp cận, nên đây không phải thước đo tổng CPU hay tốc độ khung hình.
Phát bằng trình duyệt không khiến bố cục, vẽ, ghép lớp hay bộ nhớ trở nên miễn phí. Hãy đo màn hình thật trên các thiết bị bạn hỗ trợ.
| Kịch bản | Thiết lập | Kết quả |
|---|---|---|
| 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