2024-05-24-【工程化】小程序全局分享方案

  1. 利用 wx.onAppRoute 动态开启当前页面分享功能
    优点:实现简单
    缺点:无法修改分享文案和图标
1
2
3
4
5
6
7
8
9
10
wx.onAppRoute(function (res) {
let pages = getCurrentPages(),
view = pages[pages.length - 1];
if (view) {
wx.showShareMenu({
withShareTicket: true,
menus: ["shareAppMessage", "shareTimeline"],
});
}
});
  1. 重写 Page 类,
    a. 使用隐式页面函数进行页面分享配置
    b. 使用隐式路由(wx.onAppRoute)获取当前页面路由
    优点:全局配置,可灵活自定义分享内容
    缺点:代码侵入式注入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
!(function () {
let shareUrl = "/assets/images/img-share.png";
// 获取页面配置并进行页面分享配置,重写page
var PageTmp = Page;
Page = function (pageConfig) {
// 1. 获取当前页面路由
let routerUrl = "";
wx.onAppRoute(function (res) {
let pages = getCurrentPages(),
view = pages[pages.length - 1];
routerUrl = view.route;
});
// 2. 全局开启分享配置
pageConfig = Object.assign(
{
// 分享给朋友
onShareAppMessage: function () {
//根据不同路由设置不同分享内容(微信小程序分享自带参数,如非特例,不需配置分享路径)
let shareInfo = {
title: "XX助手",
// title: pageConfigs[routerUrl],
imageUrl: shareUrl,
path: "/" + routerUrl,
};
return shareInfo;
},
// 分享至朋友圈
onShareTimeline: function () {
//根据不同路由设置不同分享内容(微信小程序分享自带参数,如非特例,不需配置分享路径)
let shareInfo = {
title: "XX助手",
// title: pageConfigs[routerUrl],
imageUrl: shareUrl,
path: "/" + routerUrl,
};
return shareInfo;
},
},
pageConfig
);
// 配置页面模板
PageTmp(pageConfig);
};
})();

2024-05-24-【工程化】小程序全局分享方案
https://zhangyingxuan.github.io/2024-05-24-【工程化】小程序全局分享方案/
作者
blowsysun
许可协议