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


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 基础篇1 什么是js 建立第一个js程序
Mar 14 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
解析javascript中鼠标滚轮事件
May 26 Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 Javascript
TinyMCE汉化及本地上传图片功能实例详解
May 31 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
vue项目中v-model父子组件通信的实现详解
Dec 10 Javascript
Vue项目中设置背景图片方法
Feb 21 Javascript
解决VUE中document.body.scrollTop为0的问题
Sep 15 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
详解关于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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
微信API接口大全
2015/04/15 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
微信小程序实现弹出菜单动画
2019/06/21 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
在Python中调用ggplot的三种方法
2015/04/08 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python决策树之C4.5算法详解
2017/12/20 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python生成词云的实现代码
2020/01/14 Python
pytorch forward两个参数实例
2020/01/17 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
管理站站长岗位职责
2013/11/27 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL