页面级实例代码覆盖
这个能力解决一个关键问题:
只改当前页面里某一个实例的代码,不要影响组件库正式版本,也不要影响其它页面。
为什么不用组件新版本
如果用户改了页面里一个按钮实例,然后推成组件库新版本,其它页面引用同组件的人都会受到影响。
页面级 override 更安全:
- 只绑定当前页面。
- 只绑定当前 instanceId。
- 其它页面仍走组件库版本。
数据结构
ts
document.componentOverrides = {
btn_1: {
instanceId: 'btn_1',
baseVersionKey: 'button@v3',
source,
contract,
},
}stale override
如果实例从 button@v3 升到 button@v4,但 override 仍然基于 button@v3,这个 override 就是 stale。
SDK 不会消费 stale override。宿主 UI 应该提示:
当前实例有一个基于旧版本的代码定制,已暂时停用。 可选择:重新编辑 / 丢弃定制 / 基于当前版本重新创建定制。
MVP 操作
- 重新编辑:基于当前组件版本重新打开源码编辑器。
- 丢弃定制:删除
componentOverrides[instanceId]。 - 推为组件库版本:后续能力,需要走组件库发布流程。