实现原理:
通过在app.js中重写App与Page方法来得到小程序生命周期函数与各页面属性,并重新执行它们。
代码如下:
//app.js
var BiData = {
wxApp: App,
wxPage: Page,
rewriteApp: function (e) {
return BiData.wxApp(BiData.instrument(e))
},
rewritePage: function (e) {
return BiData.wxPage(BiData.instrument(e))
},
appHandlerFuns: ['onshow', 'onLanch', 'onError'],
pageHandlerFuns: ['onshow', 'onLanch', 'onError'],
log(funName, self, argvs) {
console.log("打点开始【【")
console.log("方法名称:" + funName)
console.log("参数:")
console.log(argvs[0])
console.log("页面:" + (self.route ? self.route : 'APP中的方法'))
console.log("】】打点结束")
},
hook: function (funName, callback) {
var c = callback;
return function () {
BiData.log(funName, this, arguments)
c.apply(this, arguments)
}
},
instrument: function (e) {
for (var t in e) {
if ("function" == typeof e[t]) {
e[t] = this.hook(t, e[t])
}
}
return e;
},
logApi: function (option) {
}
}
App = BiData.rewriteApp
Page = BiData.rewritePage
App({
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
traceUser: true,
})
}
this.globalData = {}
}
})
本文转载自