- 1. construct [optional]
- 2. setProfile [required]
- 3. getProfile [required]
- 4. getSupportedEventList [optional]
- 5. getSupportedVariableList [optional]
- 6. getDependentVariableList [optional]
- Enhancer 提供给组件开发者 configurator 相关的 SDK
- Enhancer 提供给组件开发者 configurator 相关的 SDK
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@ == 1
或1 = 1
。 如果您希望用户可以配置其他的表达式, 如:@1-USER_ID@ * 5
, 组件开发者需要在组件内 通过new Function()
类似的方式来支持。