微信分享

基于微信公众号分享,调用微信 sdk,引用本文件前必须保证页面已经引入(支持 https) http://res.wx.qq.com/open/js/jweixin-1.2.0.js 详细查看微信公众号开发

这里是微信分享公共方法

CommonJs

本文件判断 CommonJs API(module.exports),可在 vue 中引用此模块

// vue调用
const wxShare = require('./assets/share')
wxShare(config, callback)

// 普通页面调用
wxShare(config, callback)

config

config 是为接口权限配置,必传 ;callback 为成功之后的回调函数,非必传,

config = {
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [], // 必填,调用api
  WechatShareData:{  // 必填
    'title': '分享文案',
    'link': '分享链接',
    'imgUrl': '分享图标',
    'desc': '描述'
  }
}

wxShare( config )

callback

callback 是微信 sdkapi 的其他扩展方法,非必填

wxShare(config, function() {
  // 其他api扩展 非必填
  wx.hideAllNonBaseMenuItem()
})

微信分享源码

/*! Weixin Share */
;(function(w) {
  // check API
  function checkJsApi(config) {
    var shareArr = {
      timeline: 'onMenuShareTimeline',
      appmessage: 'onMenuShareAppMessage',
      qq: 'onMenuShareQQ',
      weiboApp: 'onMenuShareWeibo',
      QZone: 'onMenuShareQZone'
    }
    for (var i = 0; i < config.jsApiList.length; i++) {
      var API = config.jsApiList[i]
      if (API.indexOf('share') != -1) {
        var type = API.split(':')[2]

        // 获取分享
        wx[shareArr[type]](config.WechatShareData)
      }
    }
  }

  var wxShare = function(config, callback) {
    wx.config({
      debug: true,
      appId: config.appId,
      timestamp: config.timestamp, // 生成签名的时间戳
      nonceStr: config.nonceStr, // 生成签名的随机串
      signature: config.signature, // 签名
      jsApiList: config.jsApiList
    })
    wx.ready(function() {
      // 检验是否分享
      checkJsApi(config)

      // 回调函数可扩展其他方法
      callback && callback()
    })

    //
    wx.error(function(res) {})
  }
  // commonjs
  if (typeof module !== 'undefined') {
    module.exports = wxShare
  } else {
    w.wxShare = wxShare
  }
})(typeof global !== 'undefined' ? global : this)