博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS微信分享不好写?来封装一下
阅读量:6225 次
发布时间:2019-06-21

本文共 1838 字,大约阅读时间需要 6 分钟。

微信开发这块,作为开发工程师来说,一般是避免不了的,也好像发现一些朋友写微信分享都是在每个页面一大把一大把的代码。

代码冗余,即便是复制过来再改也很麻烦。

之前自己封装了一下js,今天来分享一下,希望能给看到的园友带来一点思路,当然希望能帮忙一起改进。

我的思路:

1.可以分享到四个地方QQ,朋友,朋友圈,微博,一般情况下他们是一致的,可以配置一个初始参数,赋值给它们四个

2.如果出现不一致,因为前面已经赋值了初始参数,这时再把需要不一致的内容替换掉

实现主要代码:

 
  1. setData: function(){ 
  2.         var self = this
  3.         self.data = { 
  4.             title: self.title, 
  5.             desc: self.desc, 
  6.             link: self.link, 
  7.             imgUrl: self.imgUrl, 
  8.             type: self.type, // 分享类型,music、video或link,不填默认为link 
  9.             dataUrl: self.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 
  10.             success: self.success, 
  11.             cancel: self.cancel 
  12.         }; 
  13.         //深度克隆 
  14.         self.QQData = JSON.stringify(self.data); 
  15.         self.QQData = JSON.parse(self.QQData); 
  16.         self.TimeLineData = JSON.stringify(self.data); 
  17.         self.TimeLineData = JSON.parse(self.TimeLineData);   
  18.         self.WeiBoData = JSON.stringify(self.data); 
  19.         self.WeiBoData = JSON.parse(self.WeiBoData);    
  20.  
  21.   //反序列化 
  22.           self.QQData.success = self.success; 
  23.            self.TimeLineData.success = self.success; 
  24.           self.WeiBoData.success = self.success; 
  25.           self.QQData.cancel = self.cancel; 
  26.           self.TimeLineData.cancel = self.cancel; 
  27.           self.WeiBoData.cancel = self.cancel; 
  28.     } 
  29.  
  30.  
  31. wx.ready(function(){ 
  32.                 wx.showOptionMenu(); 
  33.                 if(self.data == '') self.setData(); 
  34.                 wx.onMenuShareQQ(self.QQData); 
  35.                 wx.onMenuShareAppMessage(self.data); 
  36.                 wx.onMenuShareTimeline(self.TimeLineData); 
  37.                 wx.onMenuShareWeibo(self.WeiBoData); 
  38.             }); 

使用帮助:

var wxshare = require('wxshare.js');

如果分享的内容都一致

wxshare.link = ''; wxshare.desc = ''; wxshare.imgUrl = ''; wxshare.type = ''; wxshare.dataUrl = ''; wxshare.start();

如果有不一致,针对不一致的地方进行修改

 
  1. wxshare.link = ''
  2. wxshare.title = ''
  3. wxshare.desc = ''
  4. wxshare.imgUrl = ''
  5. wxshare.setData();//必须加上 
  6. wxshare.TimeLineData.title = '';  
  7. wxshare.QQData.desc = ''
  8. wxshare.start(); 

重点说明: setData()

如果全部的分享内容都一样,直接执行start(), 判断data参数空为true,会执行setData(),

为四个分享赋值:QQData data TimeLineData WeiboData, 而后初始化

如果有不一致,首次赋值后,直接调用setData(),为四个参数赋值,之后再根据需求修改不同的对应参数,最后start()初始化。

作者:一文不提

来源:51CTO

转载地址:http://jtfna.baihongyu.com/

你可能感兴趣的文章
实验一
查看>>
单页数据多iOS预加载的方法
查看>>
acm计划(更新于2014.11.9)
查看>>
hdu3364 高斯消元1(开关控制灯,异或解的个数)
查看>>
Python网络编程1:套接字
查看>>
Complete Physics Platformer Kit 学习
查看>>
软件工程---删除重复数组
查看>>
ubuntu16 64 搭建lnmp环境
查看>>
数据结构中的图
查看>>
设计模式:结构型模式总结
查看>>
HDU 1260:Tickets(DP)
查看>>
Codeforces 1080C- Masha and two friends
查看>>
使用CRT定位内存泄漏
查看>>
异常的处理方式
查看>>
JavaScrip 数组/字典/循环
查看>>
C#Question:“XXX”的重载均与“System.Threading.WaitCallback”不匹配。
查看>>
linux service等命令不能使用的解决办法
查看>>
java学习笔记(Core Java)5 继承
查看>>
算法(3)—— 链表习题 完结
查看>>
详谈外部浏览器如何实现复制公众号一键唤起微信添加关注
查看>>