扩展新端api
用户需要创建一个npm包,结构参考cml-demo-api。将chameleon-api
中提供的每个方法利用多态接口扩展语法扩展新端的实现。
扩展新端API(以头条小程序为例,假设端扩展标识为:tt):
// 引入官方标准interface文件
<include src="chameleon-api/src/interfaces/alert/index.interface"></include>
// 扩展实现新端(以头条小程序为例,假设端扩展标识为:tt)
<script cml-type="tt">
class Method implements uiInterface {
alert(opt, successCallBack, failCallBack) {
// 根据头条小程序实现alert弹窗
let { message, confirmTitle} = opt;
tt.showModal({
showCancel: false,
title: '',
content: message,
confirmText: confirmTitle,
success() {
successCallBack(confirmTitle);
},
fail() {
failCallBack(confirmTitle);
}
});
}
}
export default new Method();
</script>
// 想覆写某已有端的方法实现(以微信小程序为例)
<script cml-type="wx">
class Method implements uiInterface {
alert(opt, successCallBack, failCallBack) {
// 按你的想法重新实现
}
}
export default new Method();
</script>
需要注意的是,为了方便结合异步流程控制如async、await等进行操作,chameleon官方提供的api接口均以promise形式进行返回。所以你也需要在外层使用js文件进行包装,将interface实现进行promise化或进行其他操作(如传入默认值)。
import ui from './index.interface';
export default function alert(opt) {
let { message = '操作成功', confirmTitle = '我知道了' } = opt;
return new Promise((resolve, reject) => {
ui.alert({ message, confirmTitle }, resolve, reject)
});
}