跳转到内容
flamo
开始使用

Runtime

Runtime 负责把 Artifact 变成可运行的 Instance,并管理它们共享或隔离的资源、调度、解析器、宿主服务和销毁顺序。调用 createFlamoRuntime() 得到的是运行环境,不是画布里已经挂载的组件。

FlamoRuntime
├─ FlamoInstance A
│ └─ runtime-owned child instances
└─ FlamoInstance B

同一个 Runtime 可以创建多个 Instance。它们可以共享 App 或 ResourcePool 带来的底层资源优势,但节点 identity、props、事件、脚本状态、child graph 和 dispose 生命周期保持实例作用域隔离。创建另一个 Instance 不会隐式创建另一个 Runtime。

  • create():根据 Artifact 创建 Instance;传入 target 或配置默认 Canvas 时同时连接渲染宿主;
  • mount(target, artifact):创建 Instance 并在同一步绑定明确的宿主目标;
  • get() / inspect():按公开身份读取实例与诊断信息;
  • destroy():递归清理 Runtime-owned child、监听器、timer、motion、DOM 与渲染资源;
  • component resolver:在 mutation 前解析并校验精确 Component Ref;
  • scheduler 与 transaction:把父子组合、动态替换和批量更新作为可回滚操作提交;
  • platform capability 与 host services:在明确 allowlist 下连接浏览器与宿主能力。

Runtime 创建的 child 默认由父级/Runtime 管理;调用者传入的现成 Instance 默认保持 caller-owned。父级销毁时,Runtime-owned child 会递归释放,caller-owned child 只解除挂接。这条规则避免重复销毁,也让多实例组合的资源回收可验证。

调用 Owner 作用
runtime.mount(target, artifact) FlamoRuntime 创建一个新的顶层 Instance,并在创建时绑定 DOM/Canvas 目标。
Card.mount(target, props) FlamoComponentApi 用模块默认 Runtime 生成 Artifact,再创建并挂载新的 Instance。
instance.mountChild(spec) FlamoInstance 在当前父 Instance 的 child graph 中增加 child,不是把当前 Instance 挂到 DOM。
instance.mountComposition(ir) FlamoInstance 以 transaction 挂载一份父子组合定义,不改变当前 Instance 的宿主目标。
instance.mountSlot(name, content) FlamoInstance 给当前 Instance 的公开 slot 分配运行态内容。

当前 FlamoInstance 没有 mount(target) 方法。需要宿主目标时必须在创建阶段调用 runtime.mount(),或把 target 传给 runtime.create()。

Runtime 的临时 mutation 不会自动写回 Artifact。要把当前结构保存为新组件,必须回到定义层生成 Composition IR、Artifact 与发布证据。

详细签名见 API Reference。