一、插件入口类

插件必须以类的方式给平台方暴露插件入口,平台在加载到插件之后,会立刻`new`一个插件实例,并传入一些必要的配置参数。

插件的入口类签名如下所示:

class PluginClass {
  constructor(config: PluginConfig) {}
  update?(props: PluginProp[]) {}
  destroy?() {}
}
  1. 类名 - `PluginClass`
    由开发者自己定义,类名建议是大驼峰式风格。

  2. 构造器 - `constructor(config: PluginConfig) {}`

    构造器函数必须要实现,以在这里实现插件的视图渲染。由平台方初始化插件时传入`config`参数,此配置参数说明如下表:

    参数描述类型

    container

    插件容器,插件必须将插件内容动态渲染在此容器里,不能渲染在此容器外面,也不能随意渲染在平台方的文档任意地方

    HTMLDivElement

    token

    插件授权token,由插件平台前端向插件平台后端申请,然后传入插件前端,插件前端不管是向插件自己业务后端还是插件平台后端发起接口请求,都需要带上此token。此参数有可能为`null`

    string | null

    assetPrefix

    插件静态资源前缀,也就是插件代码部署在平台方资源服务器上的绝对目录,插件可以使用这个参数去加载其他资源。建议参考`注意事项`中提到的`webpack自由变量`小节内容。

    string

    pluginInfo

    插件实例数据,即在兔展编辑器创建插件组件实例之后,编辑并保存的数据

    PluginInfo

    userInfo

    平台方在微信授权之后,将微信用户信息传入,当拒绝授权或者授权失败的时候,此参数为`null`或`undefined`,开发者需要考虑这种情况的容错处理,例如显示占位图

    WechatUserInfo | null

    updateWechatShareInfo

    更新微信分享配置,可以用在需要自定义微信分享的场景下,将会覆盖兔展平台默认的微信分享配置

    (patch: Partial<WechatShareData>) => void

    appendShareLinkParams

    追加微信分享链接参数,不覆盖图片平台默认的微信分享配置,但需要追加一些自定义链接参数,返回追加参数之后的完整分享链接。其中,参数`link`是原分享链接,一般直接传入`window.location.href`即可,参数`params`是要追加的参数对象

    (link: string, params: Record<string, any>) => string


  3. 更新插件 - `update?(props: PluginProp[]) {}`

    同步更新插件,当在兔展编辑器修改了插件的属性配置,可能需要同步插件的UI界面,那么就需要实现这个方法。由平台方传入`props`参数,即最新版的插件活动配置属性列表。

    如果插件没有实现这个方法,那么平台方则忽略插件属性配置的同步操作。

  4. 销毁插件 - `destroy?() {}`

    插件被卸载后的清尾逻辑,例如清除事件绑定等逻辑。由平台方在卸载插件时调用,如果插件未实现此方法,那么平台方则忽略。

二、PluginInfo

插件实例数据,是个对象,主要属性说明如下表:

属性描述类型

id

插件id,在兔展工作台定义插件时自动生成的唯一id。

注意:不是插件组件id,也不是插件活动id。

string

componentId

插件组件id,在兔展编辑器作品中添加插件时,自动生成的唯一uuid,和插件活动一一关联,通过此id可以查询该插件活动的相关业务数据。

string

name

插件英文名称,即插件入口类名,建议大驼峰式命名,为系统级唯一英文名称,不能重复命名。

string

version

插件版本号,代表该插件活动在创建时所依赖的代码版本。每次上传新代码包时,会自动迭代插件版本号,不过不会影响已经实例化的插件活动依赖的版本号,只会影响基于此版本新建的插件活动。

string

props

插件活动的相关配置属性列表,这些属性就是在编辑器配置的属性数据。这个参数有可能会传入`null`或`undefined`,请注意容错处理。

PluginProp[] | null


三、PluginProp

插件活动的配置属性数据,是个对象,主要属性说明如下表:

属性描述类型

id

属性id

string

name

属性英文名称,用于编程使用,开发者需要通过此英文名称提取活动配置,并实现相关的业务逻辑。插件内唯一,建议小驼峰式命名

string

moduleName

模块名字,所属模块,主要用于编辑器中

string

type

属性类型,主要用于编辑器中,定义该属性的录入类型,例如单行文本、多行文本、图片选择器等

string

title

属性标签,主要用于编辑器中,描述该属性的显示标签

string

value

普通属性值,在编辑器制作时存储的值

string

componentFlag

是否是自定义组件,1是,0否

number

systemComponentFlag

是否系统组件,1是,0否

number

componentValue

组件值,如果是系统组件,根据系统组件定义的格式存储,如果是普通属性组件只存属性名

any


四、WechatUserInfo

微信用户信息,参考微信文档,主要属性说明如下表:

属性描述类型

openid

用户的标识,对当前公众号唯一

string

unionid

UnionID

string

nickname

用户的昵称

string

headimgurl

用户头像

string

sex

用户的性别,值为1时是男性,值为2时是女性,值为0时是未知

number

province

用户所在省份

string

country

用户所在国家

string

city

用户所在城市

string

language

用户的语言,简体中文为zh_CN

string


五、WechatShareData

微信分享配置,是个对象,主要配置说明如下表:

属性描述类型

title

分享标题

string

desc

分享描述

string

link

分享链接

string

imgUrl

分享封面图

string

onShare

分享成功后的回调函数,回调函数参数是表示分享到哪里:

- `timeline` 微信朋友圈

- `friend` 微信好友

- `workwechat` 企业微信

- `qq` QQ好友

- `qzone` QQ空间

(type: string) => void

onCancel

分享失败的回调函数

() => void