开发插件
插件的本质是在 Runtime 上注册生命周期步骤,从而介入 Schema 编译、导出和渲染流程。
插件结构
js
export default {
name: 'MyPlugin',
install(runtime) {
runtime.lifecycleChain.addStep('BEFORE_TRANSFORM_DATA', (data) => {
return data;
});
},
};安装插件
js
import { useRuntimeApp } from '@ptahjs/ui-vue';
import MyPlugin from './my-plugin';
const runtime = useRuntimeApp({ id: 've1' });
MyPlugin.install(runtime);推荐的生命周期类型
| 类型 | 说明 |
|---|---|
BEFORE_TRANSFORM_DATA | 在原始 Schema 编译前做标准化或校验 |
GET_PAGE_SCHEMA_DATA | 在导出页面 Schema 时补充或裁剪数据 |
RENDERER_MODULE_CONTENT | 包装整个渲染内容 |
RENDERER_MODULE_ITEM | 包装单个模块渲染结果 |
示例:自动补默认场景
js
import { LIFECYCLE_TYPE } from '@ptahjs/ui-vue';
export const DefaultScenePlugin = {
name: 'DefaultScenePlugin',
install(runtime) {
runtime.lifecycleChain.addStep(LIFECYCLE_TYPE.BEFORE_TRANSFORM_DATA, (schema) => {
if (!schema.scenes || schema.scenes.length === 0) {
return {
...schema,
scenes: [{ id: 'default', props: { title: 'Page 1' } }],
};
}
return schema;
});
},
};实践建议
- 生命周期步骤必须返回处理后的数据,否则后续链路会拿不到结果。
- 插件最好只关注一类职责,例如 Schema 兼容、渲染包装或导出加工。
- 如果需要卸载自定义步骤,优先保存回调引用,再调用
runtime.lifecycleChain.removeStep()。
