uniapp-tracing
Version:
uniapp小程序端埋点
66 lines (53 loc) • 1.53 kB
JavaScript
// Config
import { initOption } from "./libs/config/constants";
// Mixins
import pvMixin from "./libs/mixins/pv";
import elementMixin from "./libs/mixins/element";
// Hooks
// Utils
import handleQueue from "./libs/utils/handle-queue";
import getCurrentTime from "./libs/utils/get-current-time";
/**
* 初始化pv埋点
*/
function initPv(Vue) {
Vue.mixin(pvMixin);
}
/**
* 初始化element埋点
*/
function initElement(Vue) {
Vue.mixin(elementMixin);
}
/**
* 初始化场景埋点
* https://developers.weixin.qq.com/miniprogram/dev/reference/scene-list.html
* https://opendocs.alipay.com/mini/framework/scene
*/
function initScene() {
uni.onAppShow(({ path, scene, query, referrerInfo }) => {
handleQueue({ type: "scene", startTime: getCurrentTime(), path: `/${path}`, scene, query, referrerInfo });
});
}
/**
* 初始化uniapp-tracing埋点
* @param {Object} Vue vue实例
* @param {Object} options 配置项
* @param {String} options.requestUrl 请求url,必填
* @param {String} options.appName 项目名称,必填
*/
function install(Vue, options = {}) {
const { requestUrl, appName } = options;
if (!requestUrl) {
throw Error(`Parameter requestUrl is required!`);
}
if (!appName) {
throw Error(`Parameter appName is required!`);
}
initOption.requestUrl = options.requestUrl;
initOption.appName = options.appName;
initPv(Vue);
initElement(Vue);
initScene();
}
export default { install };