⼩程序分享转发⽤法⼤全——⾃定义分享、全局分享、组合大年三十祝福语发朋友圈
分享
前⾔:
⽬前⼩程序只开放了页⾯⾃定义分享的API,为了能够更灵活的进⾏分享配置、满⾜运营的需求,本⽂总结了⼩程序分享转发的多种⽤法,其中包括官⽅提供的页⾯⾃定义分享,使⽤隐式路由和页⾯配置实现的全局分享和全局+⾃定义的分享组合⽅式,希望能对需要实现分享多样化的同学有所帮助。
官⽅提供的⾃定义分享:
先看下官⽹介绍:
银行免费三合一收款码如上,只有定义了转发函数,才能分享页⾯,如此如果只需分享页⾯,只需要定义分享函数即可:
onShareAppMessage(res) { }
如果需要⾃定义分享内容,则需要对函数进⾏配置,如下:
onShareAppMessage: function (res) {
return {
title: '⾃定义转发标题',
path: '/page/user?id=123'
}
}
})
如上,如果需要⾃定定义全局分享,则可以将全局分享的内容对象配置在app.js中的全局变量中,然后所有需要分享的页⾯中配置到分享函数中去就好了,如下:
//App.js 全局数据
globalData: {
//分享内容
globalShareInfo: {
title: '全局分享标题',
path: '/pages/login/index',
imageUrl: 'shopv3.oss-cn-hangzhou.aliyuncs/gift/ep/other/share.jpg'
}
清明时节雨纷纷作文}
总体来说,⼩程序要设置全局分享还是⽐较⿇烦的,你需要每个页⾯都要去开启,相对来说⽀付宝⼩程序提供有全局分享就要好多了。
那么⼩程序能不能实现⽀付宝⼩程序⼀样的全局分享呢?经过⼀番探索研究,从⼩程序底层的⼀些隐式函数实现了全局分享的功能,如⽀付宝⼩程序⼀样,⼀处配置,全局有效。
全局⾃定义分享——使⽤⼩程序隐式页⾯配置函数实现:
本例使⽤了隐式函数 Page 以及返回对象 pageConfig 来对当前访问页⾯进⾏⾃定义分享配置,具体代码如下:
1// app.js
2/**
3 * 全局分享配置,页⾯⽆需开启分享
4 * 如页⾯开启分享开关,则⾛页⾯分享配置(即使未配置内容)
5*/
6 ! function() {
7//获取页⾯配置并进⾏页⾯分享配置
8var PageTmp = Page
9 Page = function(pageConfig) {
商务车排行榜10 let view = Page
11//全局开启分享
12 pageConfig = Object.assign({
13 onShareAppMessage: function() {
14
15 }
16 }, pageConfig);
17//3. 配置页⾯模板
18 PageTmp(pageConfig);
19 }
20 }();
如上,只需要在⼩程序主⼊⼝app.js中写⼊以上代码对页⾯分享进⾏直接配置就好了(App()外边)。
功能表现:
只需要⼊⼝js中配置如上代码,即可实现全局⾃定义分享;
如果页⾯配置有分享事件的函数,那么全局分享将失效,直接⾛页⾯的分享(即使页⾯分享未配置内容,只要打开就会⾛页⾯分享);
经多次验证,上述⽅法实现的全局分享⾃动携带当前页⾯的完整参数,⽆需另外获取。
如果需要配置全局分享图⽚或者标题,直接在 onShareAppMessage 函数中配置就好了,如下:
1 pageConfig = Object.assign({
2 onShareAppMessage: function () {
3return {
4 title:"⾃定义全局分享",
5 imageUrl: wx.getStorageSync("shareUrl")
6 }
7 }
8 }, pageConfig);
使⽤隐式路由间接实现全局分享配置:
这种⽅法就没上边的好⽤了,但是涉及到隐式路由的使⽤,有兴趣的可以了解下,需要注意的是这种⽅法间接实现全局分享只是修改分享配置,前提是页⾯必须配置分享事件函数,否则⽆效。
这种全局分享的实现⽅法不建议⽤,就当了解下⼩程序的隐式路由的使⽤就好了。具体代码如下:
1 App({
2 onLaunch: function() {
3this.overShare()
4 },
5/**
6 * 间接实现全局设置分享内容(需要页⾯配置分享事件函数)
7*/
8 overShare: function() {
9 let self = this
10// 调⽤隐藏路由回调
11 wx.onAppRoute(function(res) {
12//获取加载的页⾯
13 let pages = getCurrentPages(),
14//获取当前页⾯的对象
15 view = pages[pages.length - 1],
16 data;
17if (view) {
18 data = view.data;
19if (true || !data.isOverShare) {
怎样练习表达能力20 data.isOverShare = true;
21 ShareAppMessage = function() {
22//重写分享配置
23return {
24 title: '分享标题',
25 imageUrl: wx.getStorageSync("shareUrl")
26 };
27 }
28 }
29 }
视频翻转30 })
31 },
32 })
总结:
通过上边的⽅式,我们已经实现了全局⾃定义分享。如果需要对⼤部分页⾯进⾏全局分享配置(指定标题、图⽚、页⾯路径),那么在app.js中的全局分享代码中进⾏配置就好了。对于部分需要单独配置的,可以直接在页⾯进⾏特定配置就好了。
如此,单个页⾯分享、全局分享、组合分享也就都可以实现了。
应⽤扩展——结合隐式页⾯函数、隐式路由实现所有页⾯分享配置及控制(页⾯⽆需再开启或⾃定义配置):
结合隐式路由,可实现全局控制所有页⾯的分享配置,包括全局分享、页⾯默认分享、页⾯⾃定义分享,如下图所⽰:
⽰例代码:
1// app.js
2/**
3 * 全局分享配置,页⾯⽆需开启分享
4 * 使⽤隐式页⾯函数进⾏页⾯分享配置
5 * 使⽤隐式路由获取当前页⾯路由,并根据路由来进⾏全局分享、⾃定义分享
6*/
7 ! function () {
8//获取页⾯配置并进⾏页⾯分享配置
9var PageTmp = Page
10 Page = function (pageConfig) {
11//1. 获取当前页⾯路由
12 let routerUrl = ""
13 wx.onAppRoute(function (res) {
14 let pages = getCurrentPages(),
15 view = pages[pages.length - 1];
16 routerUrl = ute
17 })
18
19//2. 全局开启分享配置
20 pageConfig = Object.assign({
21 onShareAppMessage: function () {
22//根据不同路由设置不同分享内容(⼩程序分享⾃带参数,如⾮特例,不需配置分享路径)
23 let shareInfo={}
24 let noGlobalSharePages=["index/index"]
25//全局分享配置,如部分页⾯需要页⾯默认分享或⾃定义分享可以单独判断处理
26if (!routerUrl.includes(noGlobalSharePages)){
27 shareInfo = {
28 title: "⾃定义全局分享",
29 imageUrl: wx.getStorageSync("shareUrl")
30 }
31 }
32return shareInfo
33 }
34 }, pageConfig);
35// 配置页⾯模板
36 PageTmp(pageConfig);
37 }
38 }();
如上,⽆需页⾯开启和配置,只需要在app.js中编写以上代码,即可对所有页⾯进⾏⾃定义分享配置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论