直接在app.js添加一段IIFE代码,拦截 Page() 函数
// Page 拦截
! function () {
var _Page = Page;
Page = function (options) {
// 设置全局onShow处理
if (options.onShow) {
let _onShow = options.onShow;
options.onShow = function () {
// 获取页面实例
let pages = getCurrentPages();
let _this = pages[pages.length - 1];
// 需要统一增加的操作
console.log('需要统一增加的操作');
// 继续执行后续操作
_onShow.call(_this);
}
}
// 设置全局默认分享
options = Object.assign({
onShareAppMessage: function () {
return {
title: '小茶书·茶生活交流交易社区',
path: 'pages/homePage/homePage'
};
}
}, options);
// 设置全局onShareAppMessage处理
if (options.onShareAppMessage) {
let _onShareAppMessage = options.onShareAppMessage;
options.onShareAppMessage = function (e) {
// 获取页面实例
let pages = getCurrentPages();
let _this = pages[pages.length - 1];
// 执行后续操作获取返回值
let returnData = _onShareAppMessage.call(_this, e);
// 修改后返回 return 用逗号分隔会先执行逗号前的代码段,返回后号后的值
return returnData.path = 'XXX', returnData
}
}
_Page(options);
};
}();
或者只处理 Page() 函数的参数
// intercept.js
function interceptPage(options) {
if (options.onShow) {
let _onShow = options.onShow;
options.onShow = function () {
// 获取页面实例
let pages = getCurrentPages();
let _this = pages[pages.length - 1];
// 需要统一增加的操作
// 例如 _this.name = 'XXX'
// 继续执行后续操作
_onShow.call(_this);
}
}
return options;
}
module.exports = {
interceptPage,
}
// page页面使用
let intercept = require('intercept.js');
Page(intercept.interceptPage({
// 正常代码
}));