温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用vue怎么实现一个微信分享功能

发布时间:2021-04-20 16:32:13 来源:亿速云 阅读:1789 作者:Leah 栏目:web开发

这期内容当中小编将会给大家带来有关使用vue怎么实现一个微信分享功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

为什么要使用Vue

Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试性更强的代码库,Vue允许可以将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML、CSS、JavaScript,以用来渲染网页中相应的地方,所以越来越多的前端开发者使用vue。

1、先看官方文档

wx.onMenuShareAppMessage({   title: '', // 分享标题   desc: '', // 分享描述   link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致   imgUrl: '', // 分享图标   type: '', // 分享类型,music、video或link,不填默认为link   dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空   success: function () {     // 用户确认分享后执行的回调函数   },   cancel: function () {     // 用户取消分享后执行的回调函数   } });

2、vue分享踩的坑

* 1、微信分享中获取动态的url
* 2、 微信二次分享自动添加的参数     form=singlemessage
* 3、vue中各个页面都可以调用分享

3、直接代码分析

为了保证每个页面都可以调起微信分享,需要在vue根组件中,添加 watch监听

代码

watch: {     // 监听 $route 变化调用分享链接     "$route"(to, from) {       let currentRouter = this.$router.currentRoute.fullPath;  //       if(currentRouter.indexOf('userShare') == -1){   //如果不是userShare分享页面,则分享另外一个接口         this.shareOut();       }else{         this.shareOutTwo();     //当前页面是userShare页面时分享调用另外一个接口          }     }   },

4、shareOut()函数

  let signStr = '';      //sha1加密字符串       let timestamp = 1473254558; //时间戳       let nonceStr = 'shupao';       var obj = {         title:"",        //标题         desc:"文字描述",     //描述         link:"http://www.XXXXXX.com/wx/pub/sr/simpleRegister.do",         imgUrl:"https://cache.yisu.com/upload/information/20200622/114/25286.jpg"       };       this.$ydkAjax({         SENTYPE: "GET",         url: this.$domain + '/wx/pub/common/getJsApiTicket.json', //自己服务器获取jsapi_ticket接口         params: null,         successFc: (response) => {           //拼接sha1加密字符串           signStr = 'jsapi_ticket=' + response.data.data + '&noncestr=' + nonceStr + '&timestamp=' + timestamp + '&url=' + window.location.href;           var signature = SHA1(signStr);           wx.config({             debug: false,             appId: "wx6957b3a945a05e90",   //appId             timestamp: timestamp,      //时间戳             nonceStr: nonceStr,       //加密需要字符串(自己定义的)                 signature: signature,      //sha1加密后字符串             jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage']           });           wx.ready(function () {             //分享到朋友圈"             wx.onMenuShareTimeline({               title: obj.title,               link: obj.link, // 分享链接               imgUrl: obj.imgUrl, // 分享图标               success: function () {                 // console.log('分享到朋友圈成功')               },               cancel: function () {                 // console.log('分享到朋友圈失败')               }             });             //分享给朋友             wx.onMenuShareAppMessage({               title: obj.title, // 分享标题               desc: obj.desc, // 分享描述               link: obj.link, // 分享链接               imgUrl: obj.imgUrl, // 分享图标               success: function () {                 // console.log('分享到朋友成功')               },               cancel: function () {                 // console.log('分享到朋友失败')               }             });           })         },         isLayer: false       })

5、需要注意的事

*1、url是直接通过 window.location.href 获取的,不是使用 window.location.href.split(“#”)[0]来获取, 因为我的vue项目是通过hash模式来进行路由跳转的 , 直接使用 window.location.href.split(“#”)[0]会导致签名失败

//拼接sha1加密字符串 signStr = 'jsapi_ticket=' + response.data.data + '&noncestr=' + nonceStr + '&timestamp=' + timestamp + '&url=' + window.location.href

*2、而且我们要在当前页面分享出去之后 , 其他用户打开之后 不是当前分享出去的页面 ,这就需要 调整 shareOut()函数中 obj对象中的 link参数为其他页面链接

上述就是小编为大家分享的使用vue怎么实现一个微信分享功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue
AI