使用vue编写h5公众号跳转小程序的实现代码


Posted in Vue.js onNovember 27, 2020

前言:我使用vue编写的h5公众号,实现点击小程序入口,打开小程序,微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html 要求:微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上。 跳转小程序主要的标签是 wx-open-launch-weapp 第一步在vue项目下public文件夹下的index.html页面,引入微信配置文件,我直接在body标签引入

<body>
 <noscript>
  <strong>We're sorry but default doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
 </noscript>
 <div id="app"></div>
 <!-- built files will be auto injected -->
	<!-- 引入微信配置文件 -->
	<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
 </body>

第二步建一个js文件用来存放接下来要 配置的微信配置信息,需要用到微信功能的就可以在那个页面引入就行, 定位地图啥的,都可以,我建的是这样的

使用vue编写h5公众号跳转小程序的实现代码

然后在这个js文件里面写如下代码:

//获取微信配置信息--跳转小程序、获取定位信息
export function getWxApplets(href){
	var that = this;
	this.$loading();//加载中
	//调用微信方法跳转小程序
	this.$axios({//这里是我封装的axios请求,代码就不贴了,你知道这是请求方法就行
		url:'这里是后端配置微信信息的接口url,这个没办法帮,找后端看文档琢磨',
		data:{
			param: href,//当前页
		},
		callback(res){
			that.$loading.close();
			//配置参数
			wx.config({
			 debug: false,
			 appId: res.data.appId,
			 timestamp: res.data.timestamp,
			 nonceStr: res.data.nonceStr,
			 signature: res.data.signature,
			 jsApiList: ['wx-open-launch-weapp','getLocation','openLocation'],//跳转小程序、获取定位信息、导航
			 openTagList: ['wx-open-launch-weapp']//打开的标签名
			});
			wx.ready(function(){
				//微信获取地理位置并拉取用户列表(用户允许获取用户的经纬度)
				wx.getLocation({
					type: 'gcj02',
				 success: function (res) {
						console.log("--------------获取经纬度",res)
						if(res.errMsg == "getLocation:ok"){
							//缓存经纬度信息
							that.$stor.Set("latitude",res.latitude);
							that.$stor.Set("longitude",res.longitude);
						}
				 }
				})
			})
		}
	})
}

第三步注意:需要在main.js里面注册这个标签,如下

import {post,getWxApplets} from './common/js/auth.js';//引入工具文件
 
Vue.prototype.$axios = post;//post方法 请求----这个请求的封装不贴了
Vue.prototype.$getWxApplets = getWxApplets;//获取微信配置信息
Vue.config.ignoredElements = ['wx-open-launch-weapp'];//注册wx-open-launch-weapp组件

第四步页面显示标签,点击跳转小程序,我写 了两种显示方式,都可行,如下: 先调用方法

created(){
			var that = this;
			var href = window.location.href;//当前页
			//调用微信配置方法
			this.$getWxApplets(href);
}

第一种显示方式,直接在页面上写:

<ul>
	<li v-for="(item,index) in shopInfo" :key="item.id">
  <!-- 点击打开外部链接 -->
		<div class="img" v-if="item.jumpType != 2">
			<img :src="item.image" alt="" @click="linkJump(item)"/>
		</div>
		<div class="img" v-else>
			<img :src="item.image" alt=""/>
			<!-- 点击打开小程序 这里跳转小程序是定位图片上,所以用了个div包裹用于定位,wx-open-launch-weapp这个标签只作用里面的东西,里面的css不影响外面的操作,这个标签外面的css也不会作用在这个标签里面-->
			<div class="wepp-btn">
				<wx-open-launch-weapp id="launch-btn" :username="item.appletsId" :path='item.link'>
					<script type="text/wxtag-template">
							<style>
								.btn {
									width: 300px;
									height: 140px;
								}
							</style>
							<div class="btn"></div>
					</script>
				</wx-open-launch-weapp>
			</div>
		</div>
		<p class="p1">{{item.name}}</p>
		<p class="p2">{{item.briefIntroduction}}</p>
	</li>
</ul>

第二种显示方式,使用的是v-html,js显示: html:

<ul>
	<li v-for="(item,index) in quickList" :key="item.id">
		<!-- 跳转外部链接-->
		<div v-if="item.jumpType != 2"
			class="icon" 
			:style="{backgroundImage:'url(' + item.image + ')'}" 
			style="background-repeat: no-repeat;background-size:cover;background-position: center center;"
			@click="linkJump(item)">
		</div>
		<!-- 跳转小程序 -->
		<div v-else
			class="icon" 
			:style="{backgroundImage:'url(' + item.image + ')'}" 
			style="background-repeat: no-repeat;background-size:cover;background-position: center center;">
			<!-- 点击打开小程序 -->
			<div class="wepp-btn" v-html="item.webApp"></div>
		</div>
		<p>{{item.name}}</p>
	</li>
</ul>

js:

//请求菜单列表--快捷入口
var that = this;
that.$axios({
	url:'api/find/quickEntry',
	callback(res){
		if(res.code == 1){
			for(var i in res.data){
				if(res.data[i].jumpType == 2){
     //使用了反引号来将标签转成字符串,字段显示直接用${}
					res.data[i].webApp =`<wx-open-launch-weapp id="launch-btn" username="${res.data[i].appletsId}" path="${res.data[i].link}">
										<template>
											<style>
												.btn {
													width: 90px;
													height: 90px;
												}
											</style>
											<div class="btn"></div>
										</template>
									</wx-open-launch-weapp>`;
					}
			}
			that.quickList = res.data;
		}
	}
})

最后由于微信版本问题就写了个简单的判断,我测试过有的微信版本过低,跳转小程序会没有任何动静,控制台会报一个黄色的代码错误说这个wx-open-launch-weapp,也不知道是啥,还以为是ios不兼容,补充:

mounted() {
   //是否登录
			if(this.ifLogin){
				//获取微信版本号
				var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
				//判断版本号是否匹配
				if(parseFloat(wechatInfo[1].split(".").slice(0,3).join("")) < parseFloat("7.0.12".split(".").join(""))){
				 this.$toast.center('跳转小程序仅支持微信7.0.12及以上版本');
				}
			}
			
		},

还缺了啥我就不知道了,都是摸爬滚打,上面 有官方文档,再仔细看看吧!!

到此这篇关于使用vue编写h5公众号跳转小程序的文章就介绍到这了,更多相关vue跳转小程序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue router安装及使用方法解析
Dec 02 Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
vue的hash值原理也是table切换实例代码
Dec 14 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
vue实现按钮切换图片
Jan 20 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 #Vue.js
vuex的数据渲染与修改浅析
Nov 26 #Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 #Vue.js
vue单元格多列合并的实现
Nov 26 #Vue.js
VUE项目实现主题切换的多种方法
Nov 26 #Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 #Vue.js
vue实现广告栏上下滚动效果
Nov 26 #Vue.js
You might like
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
JS面向对象编程之对象使用分析
2010/08/19 Javascript
javascript中的this详解
2014/12/08 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
[19:15]DK战队纪录片
2014/09/02 DOTA
收集的几个Python小技巧分享
2014/11/22 Python
python使用多进程的实例详解
2018/09/19 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
flask session组件的使用示例
2018/12/25 Python
python 多线程重启方法
2019/02/18 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
上海方立数码笔试题
2013/10/18 面试题
财产公证书样本
2014/04/04 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
2014年统计工作总结
2014/11/21 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
个人党性分析总结
2015/03/05 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
Java实现简易的分词器功能
2021/06/15 Java/Android
MySQL8.0的WITH查询详情
2021/08/30 MySQL
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android