跳转到内容

插件规范

当标准化的模型驱动界面无法满足特定业务需求时,iBizHUB插件体系能够无缝接入定制化的UI组件和业务逻辑,这种设计既保持了框架的规范性,又兼顾了业务的灵活性。为进一步拓展标准引擎的能力边界,系统引入插件化机制,支持三大核心扩展场景:

  • 自定义控件注入:可根据个性化需求丰富界面展示形式

  • 业务逻辑块重写:方便开发者针对特定业务场景灵活调整处理逻辑

  • 原生组件替换:能够实现性能优化与功能增强

iBizHUB插件包含很多非常有意思的特性,比如:

  • 统一注册中心:所有插件均遵循标准化适配器完成注册,确保插件管理的规范性与有序性

  • 跨应用复用:打破应用间的壁垒,实现插件在不同项目中的高效调用,提升开发效率

  • 热插拔机制则赋予系统强大的动态管理能力,支持插件在运行时按需加载或卸载,极大增强了系统的灵活性与扩展性

插件类型

插件类型注册器名称
AC_ITEMregisterAcItemProvider自填列表项绘制插件
EDITOR_CUSTOMSTYLEregisterEditorProvider编辑器自定义绘制插件
GRID_COLRENDERregisterGridColumnProvider | registerTreeGridExColumnProvider数据表格列绘制插件
TOOLBAR_ITEMregisterToolbarItemProvider工具栏项绘制插件
UILOGICNODEregisterUILogicNodeProvider界面逻辑节点插件
VIEW_CUSTOMregisterViewProvider实体视图绘制插件
DEMETHODregisterDEMethodProvider应用实体行为插件
APPCOUNTERregisterAppCounterProvider应用计数器插件
DEUIACTIONregisterUIActionProvider应用实体界面行为插件
FORM_USERCONTROLregisterFormDetailProvider表单自定义控件绘制插件
CHART_RENDERregisterControlProvider图表绘制插件
CUSTOMregisterControlProvider自定义部件绘制插件
DATAVIEW_RENDERregisterControlProvider数据视图绘制插件
EDITFORM_RENDERregisterControlProvider编辑表单绘制插件
GRID_RENDERregisterControlProvider数据表格绘制插件
LIST_RENDERregisterControlProvider列表绘制插件
PORTLET_CUSTOMregisterControlProvider自定义门户部件绘制插件
SEARCHFORM_RENDERregisterControlProvider搜索表单绘制插件
TOOLBAR_RENDERregisterControlProvider工具栏绘制插件
TREE_RENDERregisterControlProvider树视图绘制插件
SEARCHBAR_RENDERregisterControlProvider搜索栏绘制插件
WIZARDPANEL_RENDERregisterControlProvider向导面板绘制插件

多层依赖

在插件开发过程中,插件A有时会依赖于另一个插件B运行,在这种情况下,必须在加载插件A之前加载插件B,iBiz模板采用SystemJS实现插件级联加载。

在插件包package.json中添加systemjs-importmap属性,可配置选项如下:

属性名说明
baseUrl指向插件基础路径,不写指向环境里写的插件默认所在目录
packages指向依赖插件的package.json文件
imports指向依赖插件打包后的文件
styles指向依赖插件打包后的样式文件

示例

现有两个插件@ibiz-template-plugin/antv-x6-design依赖于@ibiz-template-plugin/design-base

@ibiz-template-plugin/antv-x6-design插件的package.json中添加systemjs-importmap属性:

json
{
    "name": "@ibiz-template-plugin/antv-x6-design",
    "systemjs-importmap": {
        "baseUrl": "http://172.16.240.221(非必填)",
        "packages": {
            "@ibiz-template-plugin/design-base": "@ibiz-template-plugin/design-base@0.0.1-dev.3/package.json"
        },
        "imports": {
            "@ibiz-template-plugin/design-base": "@ibiz-template-plugin/design-base@0.0.1-dev.3/dist/index.system.min.js"
        },
        "styles": {
            "@ibiz-template-plugin/design-base": "@ibiz-template-plugin/design-base@0.0.1-dev.3/dist/index.min.css"
        }
    },
}

静态资源

插件中可能会使用到静态资源,在部署时想要插件的静态资源正常加载,必须在插件的根目录src下创建一个global.ts文件,内容如下:

js
// 文件路径: [插件项目的根目录]/src/global.ts

import { PluginStaticResource } from '@ibiz-template/runtime';

const resource = new PluginStaticResource(import.meta.url);

export { resource };

在组件中通过resource.dir方法引用静态资源文件:

js
// 例:[插件项目的根目录]/public/assets/img/xxx.svg

resource.dir('assets/img/xxx.svg');
未来已来,立即拥抱应用融合的力量
Released under the MIT License.