🦉 Конвейер рендеринга 🦉
Здесь мы объясняем, как устроен конвейер рендеринга в Owl.
Предупреждение: эти заметки носят технический характер и предназначены для людей, работающих над Owl (или заинтересованных в понимании его дизайна).
Общая информация
Рендеринг происходит в два этапа:
- виртуальный рендеринг: это генерирует виртуальный dom в памяти асинхронно
- исправление: применяет виртуальное дерево к экрану (синхронно)
Существует несколько классов, участвующих в рендеринге:
- компоненты
- планировщик
- волокна: небольшие объекты, содержащие метаданные, связанные с рендерингом определенного компонента
Компоненты организованы в виде динамического дерева компонентов, видимого в пользовательском
интерфейсе. Всякий раз, когда рендеринг инициируется в компоненте C
происходит следующее:
- волокно создается на
C
и рендерится информацией о пропсах - фаза виртуального рендеринга начинается на
C
(будет асинхронно рендерить все дочерние компоненты) - волокно добавляется в планировщик, который будет непрерывно опрашивать каждый кадр анимации, если волокно выполнено
- как только это будет сделано, планировщик вызовет обратный вызов задачи, который применит исправление (если оно не было отменено за это время).