docs: improve doc for plugin related apis

This commit is contained in:
JackLian 2023-02-15 17:07:04 +08:00 committed by 刘菊萍(絮黎)
parent 36d1d3bef1
commit 9d83b8b5b9
6 changed files with 98 additions and 28 deletions

View File

@ -118,11 +118,13 @@ import { IPublicModelPluginContext } from '@alilc/lowcode-types';
const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext, options: any) => {
return {
async init() {
// 1.0.4 之后的传值方式,通过 register(xxx, options)
// 取值通过 options
// 直接传值方式:
// 通过 register(xxx, options) 传入
// 通过 options 取出
// 1.0.4 之前的传值方式,通过 init(..., preference)
// 取值通过 ctx.preference.getValue()
// 引擎初始化时也可以设置某插件的全局配置项:
// 通过 engine.init(..., preference) 传入
// 通过 ctx.preference.getValue() 取出
},
};
}
@ -155,7 +157,6 @@ BuiltinPluginRegistry.meta = {
},
}
// 从 1.0.4 开始,支持直接在 pluginCreator 的第二个参数 options 获取入参
await plugins.register(BuiltinPluginRegistry, { key1: 'abc', key5: 'willNotPassToPlugin' });
```
@ -164,8 +165,11 @@ await plugins.register(BuiltinPluginRegistry, { key1: 'abc', key5: 'willNotPassT
获取指定插件
```typescript
function get(pluginName: string): IPublicModelPluginInstance;
/**
* 获取指定插件
* get plugin instance by name
*/
get(pluginName: string): IPublicModelPluginInstance | null;
```
关联模型 [IPublicModelPluginInstance](./model/plugin-instance)
@ -175,8 +179,11 @@ function get(pluginName: string): IPublicModelPluginInstance;
获取所有的插件实例
```typescript
function getAll(): IPublicModelPluginInstance[];
/**
* 获取所有的插件实例
* get all plugin instances
*/
getAll(): IPublicModelPluginInstance[];
```
关联模型 [IPublicModelPluginInstance](./model/plugin-instance)
@ -186,8 +193,11 @@ function getAll(): IPublicModelPluginInstance[];
判断是否有指定插件
```typescript
function has(pluginName: string): boolean;
/**
* 判断是否有指定插件
* check if plugin with certain name exists
*/
has(pluginName: string): boolean;
```
### delete
@ -195,8 +205,25 @@ function has(pluginName: string): boolean;
删除指定插件
```typescript
function delete(pluginName: string): void;
/**
* 删除指定插件
* delete plugin instance by name
*/
delete(pluginName: string): void;
```
### getPluginPreference
引擎初始化时可以提供全局配置给到各插件,通过这个方法可以获得本插件对应的配置
```typescript
/**
* 引擎初始化时可以提供全局配置给到各插件,通过这个方法可以获得本插件对应的配置
* use this to get preference config for this plugin when engine.init() called
*/
getPluginPreference(
pluginName: string,
): Record<string, IPublicTypePreferenceValueType> | null | undefined;
```
## 相关类型定义

View File

@ -26,12 +26,12 @@ export interface ILowCodePluginRuntimeCore {
disabled: boolean;
config: IPublicTypePluginConfig;
logger: IPublicApiLogger;
meta: IPublicTypePluginMeta;
init(forceInit?: boolean): void;
isInited(): boolean;
destroy(): void;
toProxy(): any;
setDisabled(flag: boolean): void;
meta: IPublicTypePluginMeta;
}
interface ILowCodePluginRuntimeExportsAccessor {

View File

@ -28,4 +28,4 @@ export class PluginInstance implements IPublicModelPluginInstance {
get meta() {
return this[pluginInstanceSymbol].meta;
}
}
}

View File

@ -20,21 +20,34 @@ export interface IPublicApiPlugins {
): Promise<void>;
/**
* @deprecated use options instead
*
* use this to get preference config for this plugin when engine.init() called
*/
getPluginPreference(
pluginName: string,
): Record<string, IPublicTypePreferenceValueType> | null | undefined;
/** 获取指定插件 */
/**
*
* get plugin instance by name
*/
get(pluginName: string): IPublicModelPluginInstance | null;
/** 获取所有的插件实例 */
/**
*
* get all plugin instances
*/
getAll(): IPublicModelPluginInstance[];
/** 判断是否有指定插件 */
/**
*
* check if plugin with certain name exists
*/
has(pluginName: string): boolean;
/** 删除指定插件 */
/**
*
* delete plugin instance by name
*/
delete(pluginName: string): void;
}
}

View File

@ -14,11 +14,26 @@ import {
import { IPublicModelEngineConfig } from './';
export interface IPublicModelPluginContext {
/**
* context 使
*
* for plugin developers, costom properties can be add to plugin context
* from inside plugin for convenience.
*/
[key: string]: any;
/**
*
* by using this, init options can be accessed from inside plugin
*/
preference: IPluginPreferenceMananger;
get skeleton(): IPublicApiSkeleton;
get hotkey(): IPublicApiHotkey;
get setters(): IPublicApiSetters;
get config(): IPublicModelEngineConfig;
get material(): IPublicApiMaterial;
/**
* this event works globally, can be used between plugins and engine.
*/
@ -33,8 +48,6 @@ export interface IPublicModelPluginContext {
*/
get pluginEvent(): IPublicApiEvent;
get canvas(): IPublicApiCanvas;
preference: IPluginPreferenceMananger;
[key: string]: any;
}
/**
@ -44,4 +57,4 @@ export interface IPublicModelPluginContext {
*/
export interface ILowCodePluginContext extends IPublicModelPluginContext {
}
}

View File

@ -1,11 +1,28 @@
import { IPublicTypePluginMeta } from '../type/plugin-meta';
export interface IPublicModelPluginInstance {
pluginName: string;
dep: string[];
/**
* disable
* current plugin instance is disabled or not
*/
disabled: boolean;
meta: IPublicTypePluginMeta;
}
/**
*
* plugin name
*/
get pluginName(): string;
/**
*
* depenency info
*/
get dep(): string[];
/**
*
* meta info of this plugin
*/
get meta(): IPublicTypePluginMeta;
}