Cet article présente principalement les idées détaillées de partage WeChat sur la configuration globale du projet Vue. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Ce projet est. un projet mobile Principalement utilisé pour accéder aux services du compte public. Le projet utilise deux méthodes de connexion, la connexion autorisée par WeChat et la connexion par compte et mot de passe. Pour les projets mobiles, afin de faciliter l'expansion du projet et d'assurer une vitesse de mise à jour rapide du développement, le projet est divisé en différents modules, chaque module est une application d'une seule page. Il existe deux types de pages, l'une qui nécessite que les utilisateurs se connectent avant de pouvoir naviguer, et l'autre que les utilisateurs peuvent parcourir sans se connecter. Quel que soit celui utilisé, le partage WeChat est configuré.
Technologie utilisée
1. Utilisez vue comme framework
2 Utilisez vux comme bibliothèque de composants d'interface utilisateur
Configuration globale. des idées de partage WeChat
1. Distinguer entre général et spécial. En général, la copie de partage par défaut est configurée globalement. Le premier est que le contenu partagé n'a pas besoin d'être obtenu. de manière asynchrone et est configuré lorsque l'itinéraire saute, l'autre est que le contenu partagé doit être obtenu de manière asynchrone et que le contenu partagé doit être mis à jour après l'obtention du contenu asynchrone.
2. Pour le contenu qui n'a pas besoin d'être obtenu de manière asynchrone, nous utilisons la méthode définie dans les méta-informations de routage et appelons directement la fonction publique pour mettre à jour le contenu partagé après chaque saut de route.
Pour plus de détails, veuillez consulter les instructions d'utilisation de WeChat JSSDK
// wxShare.js import Vue from 'vue' // 在组件外使用vux集成的微信jssdk import { WechatPlugin, AjaxPlugin } from 'vux' Vue.use(WechatPlugin) Vue.use(AjaxPlugin) export default function wxShare ({title, desc, timelineTitle, link, imgUrl} = {}) { Vue.wechat.config({ debug: false, appId: appId, timestamp: timestamp, nonceStr: nonceStr, signature: signature, jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline'] }) Vue.wechat.ready(() => { Vue.wechat.onMenuShareAppMessage({ title: title, // 分享标题 desc: desc || '默认分享文案', // 分享描述 link: link || window.location.href, // 分享链接 imgUrl: imgUrl || '图标地址(必须是有效的Link)' // 分享图标 }) Vue.wechat.onMenuShareTimeline({ title: timelineTitle || desc || '默认分享文案', // 分享标题,由于分享到朋友圈没有desc,所以这里采用的策略是,指定的朋友圈分享标题优先,其次采用发送给朋友的描述,最后采用默认文案。 link: link || window.location.href, // 分享链接 imgUrl: imgUrl || '图标地址(必须是有效的Link)' // 分享图标 }) }) Vue.wechat.error((res) => { }) } // 为Vue的原型对象添加该方法,则所有vue实例都能继承该方法 Vue.prototype.$wxShare = wxShare // router/index.js 每个模块都有自己内部的路由配置 // codes... const routes = [ { path: '/index', name: 'index', redirect: '/index/homepage', children: [ { path: '/index/homepage', name: 'homepage', component: homepage meta: { title: '这是主页', shareDesc: '这是本站的主页', desc: 'homepage, click and see!', timelineTitle: '这是首页,欢迎点击关注,blablablablabla~~~', imgUrl: 'http://frankzhang.me/wp-content/uploads/2017/08/cropped-favicon-01.png' } }, ] } ] // routerRule,公共路由配置,所有模块共用一个路由控制策略 import wxShare from '@/utils/wxShare' export default function routerRule (router) { // other codes... router.afterEach(( to, from ) => { wxShare({ title: to.meta.title, desc: to.meta.shareDesc, link: to.meta.shareLink, logo: to.meta.shareLogo}) }) } // main.js import routerRule from ... routerRule(router)
Après la configuration ci-dessus, router.afterEach appellera wxShare une fois, relira les méta-informations dans le routeur et redéfinir le contenu de partage WeChat, pour atteindre l'objectif de combiner configuration globale et configuration spéciale.
Contenu partagé qui doit être obtenu de manière asynchrone
Dans ce cas, nous pouvons utiliser le hook créé de l'instance vue et appeler wxShare une fois dans le rappel réussi d'obtention les données.
// homepage.vue <script> export default { data() { return { } }, created() { getHomepageInfo() .then( res => { this.$wxShare({ title: res.title, desc: res.desc, imgUrl: res.logo }) } ) } } </script>
Points à noter
1 Si le projet adopte le mode non-historique, vous devez supprimer la partie après # sur l'URL et. transmettez-le au backend en échange du signe WeChat.
2. Selon les instructions officielles de WeChat :
Toutes les pages qui doivent utiliser JS-SDK doivent d'abord injecter des informations de configuration, sinon elles ne seront pas appelées (la même URL doit seulement être appelée une fois, pour les changements d'url L'application web SPA peut être appelée à chaque fois que l'url change...
En raison de l'application SPA, après le changement d'url, elle doit être à nouveau reconfigurée et les informations de configuration de la page actuelle est réinjectée, cette étape doit donc être effectuée sur le routeur Appelé afterEach Car selon les instructions de vue-router, le hook global afterEach est appelé après la confirmation de la navigation. a été confirmé et l'URL a changé. La signature WeChat peut être obtenue à nouveau pour l'URL mise à jour
Recommandations associées :
Liaison LAN de l'environnement de développement du projet webpack vue. Méthode IP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!