XTend Dokumentation
Dunkelmodus aktivieren

XTend Developer Center

Build with XTend today

RMT Reference: Surfaces, Lanes und Lifecycle

Die normalisierten Runtime-Records werden von tools/rmt-language/vnext-surfaces.js und dem Scheduler erzeugt.

Surfaces beschreiben UI-Flächen. Lanes planen Arbeit. Lifecycle-Operationen beschreiben, welche Arbeit in einer Lane passiert.

Syntax

OperatorFormAllowed contextsParametersFunctionDiagnosticsRelated operators
kindsurface shell kind pageSurface-Header, Overlay, ResourceKatalogwert oder IdentifierKlassifiziert Surface, Overlay oder Resource.Surface-Header erlaubt nur kind und component.component
componentcomponent x-sectionSurface-HeaderCustom-Element-Name oder IdentifierBindet eine Host-Komponente.Unerwartete Header-Clauses werden gemeldet.surface
sourcesource selector app.itemsSurface, ResourceSource-Art und ReferenzBindet einen Primitive-Record als Quelle.Fehlende Referenzen werden semantisch gemeldet.repeat from
repeat fromrepeat from selector app.itemsSurfaceSource-ReferenzErzeugt wiederholte Surface-Instanzen.Repeater brauchen stabile Keys.key
keykey item.idSurfacePfadDeklariert den stabilen Repeater-Key.Unkeyed Repeater können blockiert werden.repeat from
boundsbounds x 0 y 0 width 640 height 400SurfaceSchlüssel/Wert-PaareSetzt initiale Geometrie.Bounds-Keys brauchen Werte.surface
preserve on minimizepreserve on minimizeSurfaceRaw-ClauseErhält Surface-State beim Minimieren.Nur in Surface erlaubt.preserve
destroy releasesdestroy releases resource app.streamSurfaceResource-ReferenzBindet Surface-Destroy an Resource-Cleanup.Resource muss existieren.resource, dispose
lanelane visible weight 80 { ... }SurfaceLane-Name, optional weightGruppiert geplante Arbeit.Lanes dürfen nur Lifecycle oder stream enthalten.weight, mount
weightweight 80Lane-Headernichtnegative GanzzahlPriorisiert Lane-Arbeit.Gewicht muss eine nichtnegative Ganzzahl sein.lane
mountmount card from endpoint app.cardLane, SlotTarget, optionale Source, Condition, PolicyMaterialisiert neue UI-Arbeit.Operationen dürfen nicht top-level stehen.slot, when
hydratehydrate card from selector app.cardLane, SlotTarget, SourceFüllt vorhandene UI mit Daten.Source-Art muss erlaubt sein.hydration policy
suspendsuspend cardLane, SlotTargetPausiert eine UI- oder Resource-Einheit.Nur in Lane oder Slot erlaubt.resume
resumeresume cardLane, SlotTargetSetzt pausierte Arbeit fort.Nur in Lane oder Slot erlaubt.suspend
invalidateinvalidate cardLane, SlotTargetMarkiert Arbeit als neu zu berechnen.Nur in Lane oder Slot erlaubt.update
disposedispose cardLane, Slot, Resource-BlockTarget oder Cleanup-TextGibt Arbeit oder Resource frei.Falscher Kontext wird gemeldet.destroy releases
prewarmprewarm data from worker prepareLane, SlotTarget, SourceBereitet Daten oder UI vor, bevor sie sichtbar werden.Source-Art muss statisch sein.worker, idle
recyclerecycle row from resource poolLane, SlotTarget, SourceVerwendet vorhandene Instanzen wieder.Resource muss existieren.resource
detachdetach panelLane, SlotTargetTrennt eine Surface-Einheit vom aktuellen Host-Kontext.Nur in Lane oder Slot erlaubt.reattach
reattachreattach panelLane, SlotTargetBindet eine getrennte Einheit wieder ein.Nur in Lane oder Slot erlaubt.detach
streamstream feed from sse app.feedLane, SlotTarget, SourceBeschreibt inkrementelle Rendering-Daten.stream verlangt eine Datenquelle.sse, sanitize
slotslot header { hydrate title from selector app.title }Policy-BlockSlotnameGruppiert Operationen in einem Composition-Slot.Slots erlauben nur Lifecycle oder stream.mount, hydrate
resumabilityresumability mode server_prerender_resumePolicy-Blockmode, snapshot, event replay oder integrityDeklariert vollständige SSR-Resumability als Resume-Übergabe.Clauses müssen statisch sein und eine bekannte Resumability-Achse nutzen.hydration mode, resume

Allowed contexts

lane steht direkt in surface. Lifecycle-Operationen und stream stehen in lane oder slot. slot, on, trust, hydration, resumability, isolation und sanitize stehen in Policy-Blöcken von Lifecycle-Operationen.

bounds bleibt standardmäßig pixelgenau; responsive Bounds sind opt-in und akzeptieren gequotete CSS-native Größen, zum Beispiel bounds mode responsive scope viewport x "1rem" y "1rem" width "clamp(20rem, 70vi, 52rem)" height "min(80dvh, 42rem)" minWidth "18rem" maxHeight "48rem".

Parameters

Targets sind Identifier. Sources folgen from <kind> <target>. Conditions folgen when. Policy-Blöcke verwenden geschweifte Klammern.

Description

Lifecycle-Syntax trennt sichtbare Arbeit, user-blocking Interaktion, Hintergrundarbeit und Diagnostics. Der Host kann diese Records auf Scheduler-Lanes abbilden, ohne freie Funktionen aus der RMT-Quelle auszuführen.

Examples

template reference.lifecycle {
  state app.ready type boolean initial true
  state app.status type object preserve {
    initial {
      text "Ready"
    }
  }
  selector app.header from state app.status {
    output HeaderView
  }
  selector app.cardView from state app.status {
    output CardView
  }
  resource app.stream kind stream owner surface.shell
  resource app.pool kind object-url owner surface.shell
  portal app.root root "#app" layer surface

  surface shell kind page component x-section {
    portal app.root
    bounds x 0 y 0 width 640 height 400
    preserve on minimize
    destroy releases resource app.stream
    lane visible weight 90 {
      mount shell.card from endpoint app.card when app.ready == true {
        slot header {
          hydrate header.view from selector app.header
        }
        on click ".save" -> action app.save {
          payload id from target.dataset.id
          preventDefault true
        }
      }
      hydrate shell.card from selector app.cardView {
        hydration mode server_prerender_resume
        resumability mode server_prerender_resume
        resumability snapshot surface_state
        resumability event replay intent_queue
        resumability integrity signed_manifest
      }
      suspend shell.card
      resume shell.card {
        resumability mode server_prerender_resume
        resumability snapshot surface_state
        resumability event replay intent_queue
        resumability integrity signed_manifest
      }
      invalidate shell.card
      dispose shell.card
      prewarm shell.data from worker app.prepare
      recycle shell.row from resource app.pool
      detach shell.panel
      reattach shell.panel
      stream shell.feed from sse app.feed
    }
  }

  action app.save {
    input id string
    reduce state.app.status.text = "Saved"
    emit app.saved with id input.id
  }
}

Diagnostics

Lifecycle- und Stream-Statements außerhalb von Lane oder Slot erzeugen Kontextdiagnosen. Fehlende Selector-, Resource- oder Action-Referenzen werden semantisch gemeldet.

surface, portal, source, when, slot, on, resource, trust boundary.

Weiterführend

Der RMT-Referenzindex verbindet Surfaces und Lanes mit Scheduling- und Lifecycle-Syntax. Verwandter Artikel

(c) 2026 - CCS Networks | Powered by XRouter PHP Extension