Skip to content

Порядок отрисовки

Порядок обхода nodes, surfaces и schema-элементов в пользовательской модели.

Практическая схема

  • Документация: NovaCore.
  • Раздел: Отрисовка.
  • Тема страницы: Порядок отрисовки.
  • Переключатель TypeScript / DSL находится в панели навигации; вкладка Код в примере показывает файлы выбранного подхода.
Исполняемый примерRender pipelineCompile, frame и replay phases.
import { Nova, NovaNode, type NovaSchema } from '@endge/nova'

// Документационный сценарий: nova-render-pipeline
class ExampleNode extends NovaNode<Record<string, Event>> {
  render(): void {
    const schema: NovaSchema = [
      {
        type: 'rect',
        x: 24,
        y: 24,
        width: this.width - 48,
        height: this.height - 48,
        styles: { background: '#0d2745' },
      },
      {
        type: 'text',
        x: 44,
        y: 44,
        width: this.width - 88,
        height: 32,
        text: 'Render pipeline',
        styles: { color: '#e8f5ff' },
      },
    ]

    this.renderer.schema(schema)
    this.setRenderBoundsFromSchema(schema)
  }
}

export function mountExample(canvas: HTMLCanvasElement) {
  const app = Nova.createApp({
    target: canvas,
    size: { width: canvas.clientWidth, height: canvas.clientHeight, maxDpr: 2 },
    scheduler: { loop: false },
  })
  const surface = app.surface({ id: 'render-pipeline' })
  surface.createNode(ExampleNode)

  return () => app.destroy()
}
renderer · @endge/nova

NovaRenderContext

Recorder/context API для node render phase. Backend instance не является public root API.

interface NovaRenderContext
Schema methods
ПолеТипОписание
schema(schema)voidРисует schema в текущем порядке.
schemaBatched(schema)voidРисует schema с backend-specific batching.
schemaOrdered(schema)voidСохраняет визуальный порядок primitives.
Drawing state
ПолеТипОписание
save() / restore()voidУправляет graphics state.
clip(...) / clearClip()voidУстанавливает и снимает clip region.
setTransform(matrix)voidПрименяет node matrix перед render.
Primitives
ПолеТипОписание
rect / border / linevoidБазовая геометрия UI и timelines.
circle / polygonvoidМаркеры, зоны и схемы.
text / iconvoidLabels, markdown chunks и icon textures.
markState / restoreStateNovaRendererStateMarkScoped boundary для clip/transform состояния компонента.

Как применять

Используйте страницу как короткую рабочую заметку: сначала определите границу ответственности, затем откройте пример и сравните TypeScript-реализацию с DSL-описанием. Runtime-код остается в Nova-слое, а Vue отвечает только за mount, layout shell и cleanup.