Skip to content

开发插件

插件的本质是在 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()