1. 程式人生 > 其它 >微信公眾號開發之vue專案引入JS-SDK

微信公眾號開發之vue專案引入JS-SDK

技術標籤:微信公眾號vue前端

目前有看到的庫有weixin-jsapi、weixin-js-sdk

1.weixin-js-sdk

是基於jweixin-1.6.0版本的

說明: 僅將官方 js-sdk 釋出到 npm,支援 CommonJS,便於 browserify, webpack 等直接使用

js原始碼:https://res.wx.qq.com/open/js/jweixin-1.6.0.js

官方使用說明:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

NPM

Github

2.weixin-jsapi

是基於jweixin-1.0.0版本的

微信官方 js-sdk es6 版本 說明: 僅將官方 js-sdk 釋出到 npm,便於 webpack 使用

js原始碼:http://res.wx.qq.com/open/js/jweixin-1.0.0.js

官方使用說明:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

NPM

Github

3.專案實踐

目前專案中只使用到了以下api

我使用的是weixin-jsapi,由於按照同樣的方式引入weixin-js-sdk,就有問題,以下為我的mixin檔案

import { Component, Vue } from 'vue-property-decorator'
import { getJsapiTicket } from "@/api";
import { getLocalStorage } from "@/utils/utils";
import wx from "weixin-jsapi";
// var wx = require('weixin-js-sdk');
@Component({
  name: 'WxConfigMixin'
})
export default class extends Vue {
  public ticketUrl: any = ''
  public jsapiTicketObj: any = ''
  public contributors: string = ''
  public wishText: string = ''
  public isDetail: boolean = false 
  public async getJsapiTicket() {
    const res: any = await getJsapiTicket(this.ticketUrl);
    this.jsapiTicketObj = res
    if(this.isDetail) {
      this.wxConfig()
    }
  }
  public wxConfig () {
    let contributors: any = ''
    if(this.isDetail) {
      contributors = getLocalStorage('readyForRushData').contributors
    } else {
      contributors = this.contributors
    }
    let link = this.ticketUrl
    wx.config({
      debug: false, // 開啟除錯模式,呼叫的所有api的返回值會在客戶端alert出來,若要檢視傳入的引數,可以在pc端開啟,引數資訊會通過log打出,僅在pc端時才會列印。
      appId: this.jsapiTicketObj.appId, // 必填,公眾號的唯一標識
      timestamp: this.jsapiTicketObj.timestamp, // 必填,生成簽名的時間戳
      nonceStr: this.jsapiTicketObj.nonceStr, // 必填,生成簽名的隨機串
      signature: this.jsapiTicketObj.signature, // 必填,簽名
      jsApiList: [
        'onMenuShareTimeline', // 分享到朋友圈介面
        'onMenuShareAppMessage', //  分享到朋友介面
        // 'updateTimelineShareData', // 分享到朋友圈介面v1.4.0
        // 'updateAppMessageShareData', //  分享到朋友介面v1.4.0
        'hideMenuItems',
      ],
    });
    wx.checkJsApi({
      jsApiList: [
        'onMenuShareTimeline', // 分享到朋友圈介面
        'onMenuShareAppMessage', //  分享到朋友介面
        // 'updateTimelineShareData', // 分享到朋友圈介面
        // 'updateAppMessageShareData', //  分享到朋友介面
        'hideMenuItems', 
      ],
      success: function (res: any) {
        // console.log(res)
      }
    })
    wx.ready(function (res: any) {
      wx.hideMenuItems({
        menuList: ['menuItem:share:qq', "menuItem:share:weiboApp", 'menuItem:share:QZone'] // 要隱藏的選單項,只能隱藏“傳播類”和“保護類”按鈕,所有menu項見附錄3
      });
      // 微信分享的資料
      var shareData: any = {
        imgUrl: '圖片伺服器地址', // 分享顯示的縮圖地址
        link: link, // 分享地址
        desc: '分享描述', // 分享描述
        title: `分享標題`, // 分享標題
        success: function () {
          // 分享成功可以做相應的資料處理
          alert('分享成功')
        },
        fail: function () {
          alert('呼叫失敗')
        },
        complete: function () {
          // alert('呼叫結束')
        }
      }
      // wx.updateTimelineShareData(shareData)
      // wx.updateAppMessageShareData(shareData)
      wx.onMenuShareTimeline(shareData)
      wx.onMenuShareAppMessage(shareData)
    });
    wx.error(function (res: any) {
      // console.log(res);
    });
  }
}

有什麼問題的可以評論交流。

感覺有用的或者幫助到你的可以收藏、點贊、關注 一鍵三連。

(有問題需要交流可以加QQ245602951)