使用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中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
vue实现按钮切换图片
Jan 20 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
Vue实现todo应用的示例
Feb 20 Vue.js
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
Vue+Flask实现图片传输功能
Apr 01 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
Python的UTC时间转换讲解
2019/02/26 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
在家更换处方镜片:Lensabl
2019/05/01 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
护理自我鉴定范文
2013/10/06 职场文书
中学生演讲稿
2014/04/26 职场文书
公关活动策划方案
2014/05/25 职场文书
分公司负责人任命书
2014/06/04 职场文书
小学教师培训方案
2014/06/09 职场文书
食品卫生管理制度
2015/08/06 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python