详解单页面路由工程使用微信分享及二次分享解决方案


Posted in Javascript onFebruary 22, 2019

wxShare 说明文档

单页面路由工程使用微信分享及二次分享解决方案

很多人在单页面工程中使用weixin jsSDK时 ,第一次调用正常, 路由切换时发现调用分享配置报错, 此时忽略了一点 ,在单页面路由的 url 发生变化时, 需要重现调用微信jsSDK分享配置;

wxShare除适用于 Vue 单页工程外, 也可以使用与其他单页工程例如 React,本示例主要展示如何在 Vue中使用;

微信 jssdk调用基本原理

1. (初始化页面,划重点)掉用 api 获取当前页面 url 授权的签名
2. 配置微信分享 jssdk
3. 路由切换时, 重新执行步骤2

1. 快速使用, 只需三步

示例参见 demo下 src/main.js

在工程入口文件引入 wxShare 文件

/*************** 步骤一 引入 微信 jssdk ************/
let appInit=0;
import wx from 'weixin-js-sdk';
//配置授权api
wxShare.config.jsSDKAuth='/api/mobile/WeiXin/ecstoreSendJsSdk';
/*************** 第二步 初始化微信分享 ************/
if (location.host != "localhost:8080") {
 let sign_url = location.href.split("#")[0];
 appInit++;
 if (wx) {
  wxShare.initWxShare(sign_url);
 }
}
/*************** 第三步 监听路由重置微信分享为默认 ************/
router.afterEach(route => {
 let url=location.href.split("#")[0];
 if (!store) return;
 if(appInit>1){
  wxShare.resetWxShareConfig();
 }
 appInit++;
})
/*************** end 分割线 ************/

2. wxShare提供的方法

2.1 initWxShare()

初始化微信分享, 此时会调用内部方法 wxShareAuth, 请求 api 授权当前页面 url;

2.2 updateWxShareConfig()

更新微信分享配置内容, 例如, 在某个事件上主动调用此方法, 来更改微信分享配置的标题, 简述,链接或者封面图

2.3 resetWxShareConfig()

通常情况下, 在路由发生变化时, 希望已被更改过的分享配置, 重新重置为默认分享配置

2.4 configWXJSSDK();

调用微信jsSDK 完成分享配置

3. wxShare.config属性配置

配置名称 属性值 默认值
jsSDKAuth String ''
shareSign Object 下文shareSign
defaultWxShareConfig Object 下文defaultWxShareConfig
wxShareConfig Object 下文wxShareConfig

3.1 shareSign提供的配置

{
 appid:"",
 jsapi_ticket:"",
 nonceStr:"",
 signature:"",
 timestamp:'',
 url:"",
}

3.2 defaultWxShareConfig

{
 title: "默认分享配置title",
 desc: "默认分享配置desc",
 link: location.href.split("#")[0],
 imgUrl: 'https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/dNEBuK6.png',
 jsApiList:['onMenuShareTimeline', 'onMenuShareAppMessage', 'hideMenuItems', 'closeWindow'],
 hideMenuList:['menuItem:editTag', 'menuItem:delete', 'menuItem:originPage', 'menuItem:readMode', 'menuItem:openWithQQBrowser', 'menuItem:openWithSafari', 'menuItem:share:email', 'menuItem:share:brand']
}

3.3 wxShareConfig

wxShareConfig:{}

其他

/wxShare.js 为插件源码文件, 可根据自己需求自行更改
demo 工程只需 clone 本工程,

npm install
npm run serve

npm依赖插件

  • weixin-js-sdk
  • axios

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
纯Javascript实现Windows 8 Metro风格实现
Oct 15 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
jQuery源码解读之hasClass()方法分析
Feb 20 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
JavaScript中闭包的详解
Apr 01 Javascript
get  post jsonp三种数据交互形式实例详解
Aug 25 Javascript
vue 实现全选全不选的示例代码
Mar 29 Javascript
vue 父组件调用子组件方法及事件
Mar 29 Javascript
React Native基础入门之调试React Native应用的一小步
Jul 02 Javascript
Nuxt配置Element-UI按需引入的操作方法
Jul 06 Javascript
js实现可爱的气泡特效
Sep 05 Javascript
详解关于Vuex的action传入多个参数的问题
Feb 22 #Javascript
Vue.js实现开发购物车功能的方法详解
Feb 22 #Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 #Javascript
vue2.0中set添加属性后视图不能更新的解决办法
Feb 22 #Javascript
浅谈Node框架接入ELK实践总结
Feb 22 #Javascript
vue工程全局设置ajax的等待动效的方法
Feb 22 #Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
Feb 22 #Javascript
You might like
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
js事件委托和事件代理案例分享
2017/07/25 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python列表操作实例
2015/01/14 Python
python保存字符串到文件的方法
2015/07/01 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
django项目搭建与Session使用详解
2018/10/10 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
见习报告的格式
2014/11/04 职场文书
先进基层党组织材料
2014/12/25 职场文书
求职推荐信范文
2015/03/27 职场文书
行政介绍信范文
2015/05/04 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle