1. construct [optional]

  • 整个配置页面会被放进一个 iframe 里, 当 iframe 加载好后平台会立即调用 construct 函数。
  • 在 construct 这个函数里初始化配置页面, 包括数据源配置器和其他配置项的初始化。
  • src/configurator/index.html 是一个 handlebars 模版。
  • src/configurator/i18n 文件夹存放了需要国际化的文本。

2. setProfile [required]

  • 平台调用了 construct 后会立即调用 setProfile 函数。
  • 在调用 setProfile 时会给这个函数传入一个参数(profile), 这个参数代表之前通过 getProfile 保存的数据, 如果之前还未保存过, 那这个参数就是空对象。
  • 在 setProfile 函数里通过 profile 对象去回填各个配置项的值, 让配置页面的配置项和上一次保存时保持一致。

3. getProfile [required]

  • 当用户在配置页面点击 保存 按钮时平台会调用 getProfile。
  • 在 getProfile 函里去获取当前配置页面各个配置项的值, 将这些值放到一个 JSON 对象里返回。
  • 如果检测到某个值不符合要求, 可以通过 return false 的方式阻止这次保存。

4. getSupportedEventList [optional]

  • 一个组件可以对外提供0个或多个事件, 比如在评论组件里当点击 添加评论 按钮时, 组件就需要触发一个添加评论的事件。
  • 当用户在配置页面点击 保存 按钮时平台会调用 getSupportedEventList。
  • getSupportedEventList 函数返回一个数组, 数组里的每个元素都包含了 事件的id、事件的名字以及事件的描述。
  • 通过这个事件数组, 用户在配置组件时就知道该组件有哪些事件可用。

5. getSupportedVariableList [optional]

  • 当一个组件触发某个事件时, 可能需要提供对应的变量, 比如当添加评论时需要提供评论框里的内容。
  • 当用户在配置页面点击 保存 按钮时平台会调用 getSupportedVariableList。
  • getSupportedVariableList 函数返回一个数组, 数组的每一个元素都包含了 变量的名字、变量的数据类型以及变量的描述, 这个数组包含了该组件的所有事件提供的变量。
变量的数据类型可以是 string, number, boolean, object。

6. getDependentVariableList [optional]

  • 配置页面的配置项可以不是一个写死的值, 比如 评论列表标题 这个配置项就可以配置成 @1-USER_NAME@的列表, 这样组件就依赖了一个外部变量, 这时组件开发者可以通过 Enhancer.VariablePattern.extractVariables 来提取变量名, 将提取的变量组成一个输出返回。
  • 当用户在配置页面点击 保存 按钮时平台会调用 getDependentVariableList。
  • getDependentVariableList 返回一个数组, 数组里的每一个元素都是一个变量名。
  • 具体哪些配置项需要支持写变量, 由组件开发者自己决定。
配置项也可以配置成一个 javascript 布尔表达式 或 sql 布尔表达式, 比如 评论功能生效条件 就可以配置成 @1-USER_ID@ == 11 = 1。 如果您希望用户可以配置其他的表达式, 如: @1-USER_ID@ * 5, 组件开发者需要在组件内 通过 new Function() 类似的方式来支持。

Enhancer 提供给组件开发者 configurator 相关的 SDK