uniapp H5封装全局并且调用以微信分享为例子

本文介绍两种在H5环境中封装微信分享功能的方法:一种是在App.vue中直接封装,另一种是通过创建独立的JS文件进行封装。这两种方法均包括在全局范围内挂载分享功能及在页面中调用的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:在App.vue中封装

第一步:在App.vue里边写入封装的代码,如下

<script>
	export default {
		onLaunch: function(e) {},
		onShow: function(e) {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
		globalData: {
			// #ifdef H5
			setWxShare: function(redirect_link,id,imgurl) {
				console.log("pages", redirect_link)
				console.log("pagesid", id)
				console.log("pagesimgurl", imgurl)
				let wzhi = window.location.href //获取当前页面路由
				this.hi = wzhi.split("#")[0]
				let url = this.hi+'#/pages/share/code'
				let ref = uni.getStorageSync('code');
				//判断是否是ios环境
				let os = ""
					uni.getSystemInfo({
					 success: function(res) {
					  os = res.system;   
					 }
					});
					var link = "";
					if (os.indexOf("IOS") == -1) {
					 link = url.split("#")[0]
					}else{
					  link = url
					}
				var jump_goods2 = this.hi+'#/pages/link_jump/link_jump'+"?ref=" + ref+"&id="+id+'&redirect_link='+redirect_link;//拼接分享的链接地址
				var share_img = imgurl;//分享的图片
				//请求接口返回签名
				this.http('api/jssdk/get', 'post', {
					link: link,share_img:share_img
				}).then(res => {
					var result = res.data.data;
					var wxshare = require('jweixin-module');//调用微信集成的方法
					wxshare.config({
						debug: false, //是否打开调试
						appId: result.appId, // 公众号的唯一标识  
						timestamp: result.timestamp, // 生成签名的时间戳  
						nonceStr: result.nonceStr, // ,生成签名的随机串  
						signature: result.signature, // 签名  
						jsApiList: [
							"updateAppMessageShareData",
							"updateTimelineShareData",
						]
					});
					wxshare.ready(function() {
						//分享给朋友
						wxshare.updateAppMessageShareData({
							title: "标题", // 分享标题  
							desc: "描述", // 分享描述  
							link: jump_goods2, // 当前页面链接  
							imgUrl: result.share_img, // 分享图标                                
							success: function() { //分享成功回调
							},
							cancel: function() { //取消分享回调
							}
						});
						//分享到朋友圈
						wxshare.updateTimelineShareData({
							title: "标题", // 分享标题
							desc: "描述", // 分享描述  
							link: jump_goods2, // 当前页面链接  
							imgUrl: result.share_img, // 分享图标                       
							success: function() {
							},
							cancel: function() {
							}
						});
					})
				});
			},
			// #endif
		},
		methods: {

		}
	}
</script>

第二步:在main.js中挂载全局

// #ifdef H5
Vue.prototype.setWxShare = App.globalData.setWxShare;   // 右上角分享
// #endif

第三步:在相应的页面中调用

onShow(e) {
	// #ifdef H5
	let pages = getCurrentPages();
	var redirect_link = pages[pages.length - 1].route;
	this.setWxShare(redirect_link)// 分享传入参数
	// #endif
},

方法二:建一个js来进行封装

第一步:在static下建一个share.js的文件内容如下:

 async function setWxShare (redirect_link, id, imgurl) {
	console.log("pages", redirect_link)
	console.log("pagesid", id)
	console.log("pagesimgurl", imgurl)
	let wzhi = window.location.href //获取当前页面路由
	this.hi = wzhi.split("#")[0]
	let url = this.hi + '#/pages/share/code'
	let ref = uni.getStorageSync('code');
	let os = ""
	//判断环境是否是ios
	uni.getSystemInfo({
		success: function(res) {
			os = res.system;
		}
	});
	var link = "";
	if (os.indexOf("IOS") == -1) {
		link = url.split("#")[0]
	} else {
		link = url
	}
	var jump_goods2 = this.hi + '#/pages/link_jump/link_jump' + "?ref=" + ref + "&id=" + id + '&redirect_link=' +redirect_link;//拼接的分享链接地址
	var share_img = imgurl;
	//请求接口返回签名
	await this.http('api/jssdk/get', 'post', {
		link: link,
		share_img: share_img
	}).then(res => {
		var result = res.data.data;
		var wxshare = require('jweixin-module');//调用微信集成的方法
		wxshare.config({
			debug: false, //是否打开调试
			appId: result.appId, // 公众号的唯一标识  
			timestamp: result.timestamp, // 生成签名的时间戳  
			nonceStr: result.nonceStr, // ,生成签名的随机串  
			signature: result.signature, // 签名  
			jsApiList: [
				"updateAppMessageShareData",
				"updateTimelineShareData",
			]
		});

		wxshare.ready(function() {
			//分享给朋友
			wxshare.updateAppMessageShareData({
				title: "标题", // 分享标题  
				desc: "描述", // 分享描述  
				link: jump_goods2, // 当前页面链接  
				imgUrl: result.share_img, // 分享图标                                
				success: function() { //分享成功回调
				},
				cancel: function() { //取消分享回调
				}
			});
			//分享到朋友圈
			wxshare.updateTimelineShareData({
				title: "标题", // 分享标题
				desc: "描述", // 分享描述  
				link: jump_goods2, // 当前页面链接  
				imgUrl: result.share_img, // 分享图标                       
				success: function() {},
				cancel: function() {}
			});
		})
	});
}
export default {setWxShare};//暴露出这个方法

第二步:在main.js引用,并且挂载全局

const https = require('./static/http.js')
import share from './static/share.js';
Vue.prototype.setWxShare = share.setWxShare;

第三步:在相应的页面中调用

onShow(e) {
	// #ifdef H5
	let pages = getCurrentPages();
	var redirect_link = pages[pages.length - 1].route;
	this.setWxShare(redirect_link)// 分享传入参数
	// #endif
},
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值