ホームページ > ウェブフロントエンド > jsチュートリアル > vue で WeChat jssdk ロジックを使用する方法の紹介 (コード例)

vue で WeChat jssdk ロジックを使用する方法の紹介 (コード例)

不言
リリース: 2018-11-14 10:10:36
転載
2663 人が閲覧しました

この記事では、vue での WeChat jssdk ロジックの使用方法を紹介します (コード例)。必要な友人が参考になれば幸いです。

vue での WeChat jssdk の簡単な使用

import wx from 'weixin-js-sdk';

wx.config({
  debug: true,
  appId: '',
  timestamp: ,
  nonceStr: '',
  signature: '',
  jsApiList: []
});

wx.ready(() => {
  // do something...
});

wx.error((err) => {
  // do something...
});
ログイン後にコピー

上記は WeChat 公式が提供するサンプル code ですが、実際のプロジェクトで使用する場合は、コードはさらにカプセル化する必要があります。この記事では vue に基づいて説明しますが、他のフレームワークでも同様です。

WeChat パブリック プラットフォームの公式ドキュメントでは、セキュリティ上の考慮事項により、署名ロジックはバックエンドで処理する必要があることが指摘されているため、ここでは署名の原理については詳しく説明しません。主に、バックエンドから返される署名の使用方法について説明します。論理レベルでは、インターフェイスを呼び出す前に wx.config メソッドが必要であるため、可能な限り抽出して個別に配置できます。

# utils/
.
├── common.js            # 通用函数
└── lib
    └── wechat           # 微信相关代码
        ├── auth         # 微信用户登陆获取信息相关代码
        │   ├── auth.js
        │   └── index.js
        ├── config       # jssdk 初始化相关代码
        │   └── index.js
        ├── helper.js    # 微信相关操作
        └── share        # 分享接口相关代码
            └── index.js
ログイン後にコピー
import sdk from 'weixin-js-sdk';

export function initSdk({ appid, timestamp, noncestr, signature, jsApiList }) { // 从后端获取
  sdk.config({
    debug: process.env.VUE_APP_ENV !== 'production',
    appId: appid,
    timestamp: timestamp,
    nonceStr: noncestr,
    signature: signature,
    jsApiList: jsApiList
  });
}
ログイン後にコピー

このようにして、jssdk の初期化が完了し、共有インターフェイスを初期化できます。最初に、すべての url ページ (SPA アプリケーションの view) に対応することが可能であるため、それは次のとおりであることを共有したかったのです。 viewmixin を混合して使用して記述されたため、実装の最初のバージョンが生成されました。

// example.vue
export default {
  name: 'example',

  wechatShareConfig() {
    return {
      title: 'example',
      desc: 'example desc',
      imgUrl: 'http://xxx/example.png',
      link: window.location.href.split('#')[0]
    };
  }
}
ログイン後にコピー
// wechatMixin.js
import { share } from '@/utils/lib/wechat/share';

// 获取 wechat 分享接口配置
function getWechatShareConfig(vm) {
  const { wechatShareConfig } = vm.$options;
  if (wechatShareConfig) {
    return typeof wechatShareConfig === 'function'
      ? wechatShareConfig.call(vm)
      : wechatShareConfig;
  }
}

const wechatShareMixin = {
  created() {
    const wechatShareConfig = getWechatShareConfig(this);
    if (wechatShareConfig) {
      share({ ...wechatShareConfig });
    }
  }
};

export default wechatShareMixin;
ログイン後にコピー
// utils/lib/wechat/share
import { getTicket } from '@/utils/lib/wechat/helper'; // 签名接口
import { initSdk } from '@/utils/lib/wechat/config';
import sdk from 'weixin-js-sdk';

// 接口清单
const JS_API_LIST = ['onMenuShareAppMessage', 'onMenuShareTimeline'];

// 消息分享
function onMenuShareAppMessage(config) {
  const { title, desc, link, imgUrl } = config;
  sdk.onMenuShareAppMessage({ title, desc, link, imgUrl });
}

// 朋友圈分享
function onMenuShareTimeline(config) {
  const { title, link, imgUrl } = config;
  sdk.onMenuShareTimeline({ title, link, imgUrl });
}

export function share(wechatShareConfig) {
  if (!wechatShareConfig.link) return false;

  // 签名验证
  getTicket(wechatShareConfig.link).then(res => {
    // 初始化 `jssdk`
    initSdk({
      appid: res.appid,
      timestamp: res.timestamp,
      noncestr: res.noncestr,
      signature: res.signature,
      jsApiList: JS_API_LIST
    });

    sdk.ready(() => {
      // 初始化目标接口
      onMenuShareAppMessage(wechatShareConfig);
      onMenuShareTimeline(wechatShareConfig);
    });
  });
}
ログイン後にコピー

書いてみると一見何の問題もないように見えますが、各 view フォルダーには .vue の WeChat 設定があり、非常に肥大化しているように見えます。実装の 2 番目のバージョンでは、vue-routerbeforeEach フックに jssdk 初期化を配置することで、共有設定の統一された設定を実現できます。より直感的に。

// router.js

//...
routes: [
  {
    path: '/',
    component: Example,
    meta: {
      wechat: {
        share: {
          title: 'example',
          desc: 'example desc',
          imgUrl: 'https://xxx/example.png'
        }
      }
    }
  }
]
//...

// 初始化分享接口
function initWechatShare (config) {
  if (config) {
    share(config);
  }
}

router.beforeEach((to, from, next) => {
  const { shareConfig } = to.meta && to.meta.wechat;
  const link = window.location.href;

  if (!shareConfig) next();

  initWechatShare({ ...shareConfig, link });
  switchTitle(shareConfig.title); // 切换标题
  next();
});
ログイン後にコピー

このようにすると、.vue は非常にきれいに見え、ビジネス ロジック以外のコードが多すぎなくなります。

以上がvue で WeChat jssdk ロジックを使用する方法の紹介 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート