You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.4 KiB

10 months ago
// 读取小程序原版sdk
import QDTracker from '../packages/QDTracker-mp';
const QDTMini = {
// 提供扩展性
instance: QDTracker,
// 平台
uniPlatform: 'mp',
// 小程序分类
mpPltf: '',
// 提供初始化和配置参数
init(opt) {
QDTMini.adaptGlobalApi();
// 预留空间uni参数支持预加工
// 初始化
QDTracker.init({
...opt,
mpPltf: QDTMini.mpPltf,
});
},
// 覆写小程序全局应用
adaptGlobalApi() {
// 确定全局变量
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU
// #ifdef MP-WEIXIN
QDTMini.mpPltf = 'wx';
// #endif
// #ifdef MP-BAIDU
QDTMini.mpPltf = 'smart';
// #endif
// #ifdef MP-ALIPAY
QDTMini.mpPltf = 'alipay';
// #endif
// 通过额外绑定进行补充
// console.log('onload');
// #endif
},
// 覆写小程序页面应用
adaptPageApi(pageOpt) {
QDTracker.startPageMonitor(pageOpt, QDTracker);
},
// uni的页面page级别操作,专门用于页面级混入
QDTMixin: {
methods: {
// 重写的方法,例如 onLoad
customOnLoad(pageVm) {
// 在这里添加您的自定义逻辑
// 1. 页面包含自定义组件时,需要额外注册(自定义组件嵌套同理)
const traverseChildren = children => {
(children || []).forEach(child => {
QDTMini.adaptPageApi(child);
if (child.$children && child.$children.length) {
traverseChildren(child.$children);
}
});
};
traverseChildren(pageVm.$children);
// 2. 注册主页面
// 新版uniapp中,vue3下将$mp调整为$scope,为非向前兼容场景
// 故此处根据vue版本不同,针对性做相应调整
if (!pageVm.$mp.page) return;
QDTMini.adaptPageApi(pageVm.$mp.page);
},
},
// 使用 Vue 生命周期钩子来调用重写的方法
onLoad() {
// 此处同步需要更新页面生命周期的注册
this.customOnLoad(this);
},
},
};
export default QDTMini;