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


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 相关文章推荐
js显示时间 js显示最后修改时间
Jan 02 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
AngularJS实现ajax请求的方法
Nov 22 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 Javascript
Javascript同时声明一连串(多个)变量的方法
Jan 23 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 Javascript
vue实现简单瀑布流布局
May 28 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
手写实现JS中的new
Nov 07 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
php错误日志简单配置方法
2016/07/11 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
Jquery使用val方法读写value值
2015/05/18 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
axios实现文件上传并获取进度
2020/03/25 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Python冲顶大会 快来答题!
2018/01/17 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python批量发送post请求的实现代码
2018/05/05 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
Java基础面试题
2014/07/19 面试题
在校生自我鉴定
2014/01/23 职场文书
优秀求职信范文分享
2014/01/26 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技