设定小程序全局分享方法,搜索到的思路通常如下:

引用
小程序的全局分享方法onShareAppMessage

思路是子类重写。
但我遇到的问题是:

  1. 微信开发工具自动为每个页面添加了空白的onShareAppMessage方法
  2. 无法约束后续的开发者,不要添加空白函数。

以上可以用脚本一次性清除已有的空白函数,再辅助以code linting。
单更好的思路是装饰器模式(以下代码只是用了思想)

! function () {
  const PageTmp = Page;
  Page = function (pageConfig) {
    let _onShareAppMessage = function() {};
    // 隐藏原有实现
    if(typeof pageConfig.onShareAppMessage != 'undefined' 
        && pageConfig.onShareAppMessage instanceof Function){ 
      _onShareAppMessage = pageConfig.onShareAppMessage;
    }
    pageConfig.onShareAppMessage = function(params) {
      let shareInfo = _onShareAppMessage.call(this, params);
      // 在原实现的基础上增强能力
      if (typeof shareInfo == 'undefined') {
        // 本例:没有实现onShareAppMessage的Page,补充该能力
        shareInfo = {
          title: '标题',
          imageUrl: '图片',
          path: '路径'
        }
      }
      return shareInfo;
    }
    PageTmp(pageConfig);
  }
}();

不老王
12 声望0 粉丝