系统介绍
NOTE
扩展能力自启动器版本 1.0.0 起提供
SJMCL 的扩展系统是一套前端扩展运行时,旨在拓展启动器的界面与功能。扩展通过清单文件声明自身,通过贡献点挂载入启动器的界面,并通过宿主注入的 API 获取可用能力。
系统模型
一套扩展由以下部分组成:
- 清单文件:描述扩展标识、名称、版本和入口
- 贡献点:通过声明不同的界面贡献点,在不同位置拓展启动器的界面,定义扩展的交互能力
- 宿主能力:由启动器注入
React、ChakraUI、启动器运行时数据、上下文接口。
扩展脚本运行在受限制的宿主环境中
注册流程
扩展从导入到挂载的流程如下:
- 用户导入
.sjmclx或.zip包。 - 启动器解压扩展包并读取
sjmcl.ext.json。 - 若存在
frontend.entry,启动器加载对应脚本。 - 脚本读取
document.currentScript.dataset.extensionToken。 - 脚本调用
window.registerExtension(factory, token)。 - 宿主执行
factory(api),读取返回的贡献点。 - 贡献点被挂载到首页、设置页、独立页面等位置。
页面与挂载点
目前启动器允许扩展提供以下界面贡献:
- 首页卡片
- 扩展设置页
- 自定义页面
- (独立窗口)自定义页面
这些入口都由扩展在注册时显式声明。
