vue实现微信公众号h5跳转小程序的示例代码

 更新时间:2022年08月07日 11:04:08   作者:_詹某_  
本文主要介绍了vue实现微信公众号h5跳转小程序的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
.push(item) }) return pages } }

因为我们默认是4个一行,一页8个,所以我们将原来的数组列表稍微更改一下数据结构,将其变为数组套数组的套娃模式,根据 innerArray 的个数来判断需要分几页。有兴趣的朋友可以自己 cv 一下代码看看实现效果。

computed 中的 pages 写好之后我们需要将原来遍历的 iconList 修改为 pages。

这样就实现了可以左右滚动的容器了。

开放标签 wx-open-launch-weapp 使用

接下来是使用微信给我们提供的标签来实现跳转微信小程序

前置准备 - 引入 js

在我们使用之前,需要在温馨公众平台里填写必要的 js接口安全域名,这里不详细说明,有需要的话可以点这里移步查看一下.

如果想在我们的项目中使用微信开放标签的话需要引入相关 js 文件。

我们打开 index.html,引入相关 js 文件。

<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

配置 config

所有需要使用开放标签的页面必须先注入配置信息,并通过openTagList字段申请所需要的开放标签。

这一步需要我们调用接口,把当前页面的 url 地址传给后端然后拿到 appId、timestamp、nonceStr 和 signature。然后进行相对应的配置。

这里不得不吐槽一下,由于后端和我都没有写过 h5 跳转小程序相关内容,公司里也是第一次遇到这种需求,一开始就产生了各种非常奇葩的情况。

当时情况是我先给后端把 openId 传过去,他给我返对应的 ticket。接着我把 ticket 传给后端,他给我返我需要的东西。。。反正最后写的两个人都懵了,还是另一个还算清醒的后端过来看了下,给我们重新整理了思路,只需要我把 url 给后端就可以了,其余的我不用管,拿值就完事了。

大致代码如下

let url = window.location.href.slice(0, window.location.href.indexOf('#'))
const res = await getSignatureInfo({ url })
wx.config({
debug: false,
appId: res.appId,
timestamp: res.timestamp,
nonceStr: res.nonceStr,
signature: res.signature,
jsApiList: ['closeWindow'],
openTagList: ['wx-open-launch-weapp']
})

配置完成之后可以通过 ready 接口处理成功验证

wx.ready(() => {
    console.log('success')
})

当控制台输出了 success 之后,我们配置这一块就成功了

wx-open-launch-weapp 使用

wx-open-launch-weapp 标签用起来其实很简单

<wx-open-launch-weapp
    :username="item.originalId"
    :path="`${item.pageUrl}?phone=${user.phone}`"
  >
    <script type="text/wxtag-template">
      code...
    </script>
  </wx-open-launch-weapp>

将需要跳转小程序的原始 id 和需要跳转到哪个路径写一下就完事了。这里比较坑的是样式问题。

处理样式

我们这里的跳转需要根据后端传的一个 appType 判断是跳转到另外的 h5 或者 公众号 或者 小程序。

本来我的思路是直接循环,判断当前 app 是否是跳转小程序,如果是就渲染 wx-open-launch-weapp,否则渲染普通的 div 标签。

但是这里有个大坑,wx-open-launch-weapp 这个鬼东西里面 script 写的 dom 元素是没办法使用 rem 的。等于说只要是小程序跳转类型的 icon 大小都会和另外两个类型的大小有一些细微的差别。这种差别在正常手机上看倒是还好,但是只要用 pad 打开那直接爆炸。而且这个标签还必须在真机上用微信打开才能调试,等于只要我有一些改动,不论大小都要先上传测试环境然后再尝试效果,总之就是极其之坑。

花了一点功夫网上冲浪寻找办法最终找到一个我个人认为最好的办法 -- 蒙层。

.icon {
    width: 25%;
    float: left;
    overflow: hidden;
    text-align: center;
    margin-bottom: .22rem;
}

通过浮动 + 相对定位的方法把所有 icon 在 .common_component 元素中渲染出来,然后还是通过 v-if 来判断当前 icon 是否是需要跳转小程序的,如果是就展示。和之前唯一的区别就是我们将开放标签中的内容提了出来,标签中只有一对 div 元素,样式就是绝对定位,宽高 100%并提高一下 z-index 的值。

这样就可以完美实现我们需要的功能了。

到此这篇关于vue实现微信公众号h5跳转小程序的示例代码的文章就介绍到这了,更多相关vue 公众号跳转小程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue项目main.js配置及使用方法

    vue项目main.js配置及使用方法

    main.js是项目的入口文件,项目中所有的页面都会加载main.js,本文主要介绍了vue项目main.js配置及使用方法,非常具有实用价值,需要的朋友可以参考下
    2023-05-05
  • Vue插槽简介和使用示例详解

    Vue插槽简介和使用示例详解

    插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签,这篇文章主要介绍了Vue插槽的理解和使用,需要的朋友可以参考下
    2023-03-03
  • Vue3中pinia用法示例

    Vue3中pinia用法示例

    这篇文章主要介绍了Vue3中使用pinia,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Mint UI实现A-Z字母排序的城市选择列表

    Mint UI实现A-Z字母排序的城市选择列表

    这篇文章主要为大家详细介绍了Mint UI实现A-Z字母排序的城市选择列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Vuex之理解state的用法实例

    Vuex之理解state的用法实例

    本篇文章主要介绍了Vuex之理解state的用法实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Vue中watch、computed、updated三者的区别及用法

    Vue中watch、computed、updated三者的区别及用法

    这篇文章主要介绍了Vue中watch、computed、updated三者的区别及用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 一文完全掌握Vue中的$set方法

    一文完全掌握Vue中的$set方法

    这篇文章主要给大家介绍了关于如何完全掌握Vue中$set方法的相关资料,vue中$set方法对数组和对象的处理本质上的一样的,对新增的值添加响应然后手动触发派发更新,需要的朋友可以参考下
    2023-11-11
  • Vue父子组件之间事件通信示例解析

    Vue父子组件之间事件通信示例解析

    这篇文章主要介绍了React中父子组件通信详解,在父组件中,为子组件添加属性数据,即可实现父组件向子组件通信,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2023-03-03
  • vue实现前端列表拖拽功能

    vue实现前端列表拖拽功能

    这篇文章主要为大家详细介绍了如何利用vue实现前端列表拖拽功能,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2023-12-12
  • vue3如何实现单点登录

    vue3如何实现单点登录

    这篇文章主要介绍了vue3如何实现单点登录问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论