微信外H5跳转小程序——<JumpApp/>组件(vue项目)

本文介绍了在Vue项目中,如何实现在微信内外点击商品跳转到微信小程序的功能。通过配置云开发云函数openMiniapp,编写通用组件,并处理H5端的初始化与调用,实现了H5跳转小程序的需求。详细步骤包括云函数的创建、部署,以及H5部分的组件设计和关键代码解释。
摘要由CSDN通过智能技术生成

场景
有个H5(vue项目),需要实现点击商品item跳转到小程序,微信内和微信外都要支持,这里我们只介绍一下H5在微信外的跳转。

如图所示,红框内是一个商品,就是点击这里,要跳转小程序:

在这里插入图片描述

配置微信小程序云开发(云函数)
1、开通云开发
在这里插入图片描述

然后选择免费额度

2、云开发权限设置

在这里插入图片描述

找到权限设置,把这里的「未登录用户访问权限」点开

3、新建云函数openMiniapp

在这里插入图片描述

这里我们先只需要建个名为openMiniapp的云函数放在这里就行,它的代码后面再写。

4、修改云函数权限

在这里插入图片描述

添加一下这部分配置,注意这里的名称要和云函数的名称一致:

在这里插入图片描述

云函数代码
1、编写云函数代码
如果是原生小程序,当配置完云开发+云函数之后,小程序项目目录应该就多出一个云函数的目录(可能叫cloudbase,但是因为我这里是用的uniapp,这个目录是自定义的,我设置为wxcloudfunctions):

在这里插入图片描述

附:
uniapp配置云函数教程1
uniapp配置云函数教程2

云函数的代码:

package.json:

{
   
  "name": "GENERAL",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
   
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
   
    "wx-server-sdk": "~2.3.2"
  }
}
复制代码

index.js:

const cloud = require('wx-server-sdk')
cloud.init()

exports.main = async (event, context) => {
   
	const {
    path = '', queryData = {
   }, } = event // 我从H5那边传进来的参数,可以从event里获取到

	// 获取queryStr
	let queryStrArr = []
	for (let key in queryData) {
   
		const str = `${
   key}=${
   queryData[key]}` // name=tom
		queryStrArr.push(str)
	}
	const queryStr = queryStrArr.join('&')

	console.log('path', path)
	console.log('queryStr', queryStr)

	return cloud.openapi.urlscheme.generate({
   
		jumpWxa: {
   
			path: path ? ('/' + path) : '', // 打开小程序时访问路径,为空则会进入主页
			query: queryStr, // 可以使用 event 传入的数据制作特定参数,无需求则为空
		},
		isExpire: true, //是否到期失效,如果为true需要填写到期时间,默认false
		expire_time: Math.round(new Date().getTime() / 1000) + 3600
		//我们设置为当前时间3600秒后,也就是1小时后失效
		//无需求可以去掉这两个参数(isExpire,expire_time)
	})
}

复制代码

2、部署云函数
右键,选择创建并部署。

在这里插入图片描述

这样云函数的部署就完成了。

H5部分
1、<JumpApp/>
我的想法是写一个通用组件<JumpApp/>,不包含任何样式,内容通过<slot/>传进来,这样后面不管什么样的跳转都可以使用它了。

我可以这样:

<!-- 商品 -->
<view v-for="item in goodsList ?? []" :key="item.id" class="item_wrap">
  <JumpApp
    :ghid="jumpAppGhCode"
    :appid="jumpAppAppid"
    :envid="jumpAppEnvid"
    :ready="doctorInfo?.doctorCode"
    :path="`pages/product/details/details`"
    :queryData="{
   
      dCode: doctorInfo?.developerCode ?? '',
      skuCode: item.chnlGoodsId,
    }"
  >
    <view class="service_package_item">
      <image class="service_package_item_icon" :src="item.goodsImg?.split(',')[0] ?? ''"></image>
      <view class="service_package_item_content">
        <view class="service_package_item_content_title_wrap">
          <view class="service_package_item_content_title">{
   {
    item.goodsName }}</view>
          <view class="service_package_item_content_price">{
   {
    item.goodsFeeStr }}</view>
        </view>
        <view class="service_package_item_content_desc">{
   {
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRMEB定制开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值