🦉 Конвейер рендеринга 🦉

Здесь мы объясняем, как устроен конвейер рендеринга в Owl.

Предупреждение: эти заметки носят технический характер и предназначены для людей, работающих над Owl (или заинтересованных в понимании его дизайна).

Общая информация

Рендеринг происходит в два этапа:

  • виртуальный рендеринг: это генерирует виртуальный dom в памяти асинхронно
  • исправление: применяет виртуальное дерево к экрану (синхронно)

Существует несколько классов, участвующих в рендеринге:

  • компоненты
  • планировщик
  • волокна: небольшие объекты, содержащие метаданные, связанные с рендерингом определенного компонента

Компоненты организованы в виде динамического дерева компонентов, видимого в пользовательском интерфейсе. Всякий раз, когда рендеринг инициируется в компоненте C происходит следующее:

  • волокно создается на C и рендерится информацией о пропсах
  • фаза виртуального рендеринга начинается на C (будет асинхронно рендерить все дочерние компоненты)
  • волокно добавляется в планировщик, который будет непрерывно опрашивать каждый кадр анимации, если волокно выполнено
  • как только это будет сделано, планировщик вызовет обратный вызов задачи, который применит исправление (если оно не было отменено за это время).