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


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 可以拖动的DIV(二)
Jun 26 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
js Object2String方便查看js对象内容
Nov 24 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 Javascript
node内置调试方法总结
Feb 22 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
Vue 处理表单input单行文本框的实例代码
May 09 Javascript
express中static中间件的具体使用方法
Oct 17 Javascript
VUE 实现element upload上传图片到阿里云
Aug 12 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开发入门教程之面向对象
2006/12/05 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
python字符串反转的四种方法详解
2019/12/02 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
技校学生个人职业生涯规划范文
2014/03/03 职场文书
分居协议书范本
2014/11/03 职场文书
董事长岗位职责
2015/02/13 职场文书
前台岗位职责范本
2015/04/16 职场文书
商业计划书之服装
2019/09/09 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
Python标准库pathlib操作目录和文件
2021/11/20 Python