Runtime
Runtime 负责把 Artifact 变成可运行的 Instance,并管理它们共享或隔离的资源、调度、解析器、宿主服务和销毁顺序。调用 createFlamoRuntime() 得到的是运行环境,不是画布里已经挂载的组件。
Runtime 与 Instance
Section titled “Runtime 与 Instance”FlamoRuntime├─ FlamoInstance A│ └─ runtime-owned child instances└─ FlamoInstance B同一个 Runtime 可以创建多个 Instance。它们可以共享 App 或 ResourcePool 带来的底层资源优势,但节点 identity、props、事件、脚本状态、child graph 和 dispose 生命周期保持实例作用域隔离。创建另一个 Instance 不会隐式创建另一个 Runtime。
Runtime 负责什么
Section titled “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 只解除挂接。这条规则避免重复销毁,也让多实例组合的资源回收可验证。
几种 mount 分别属于谁
Section titled “几种 mount 分别属于谁”| 调用 | 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。
Copyright (c) 2025-present [email protected]