vue开发小结(下)
前言
继前几天总结了vue开发小结(上)后,发现还有很多的点没有能列举出来,于是还是打算新建一个下篇,再补充一些vue开发中需要注意的细节,确实还是都是细节的问题,我只是在这里强调下,希望对大家有帮助(ps:另关于管理端的貌似我还没写,说不定还有一篇,哈哈)。
正文
这次主要大概总结下vue history模式下微信分享和微信支付的细节。
一、微信分享
首先vue history模式下,vue是通过history.pushState API 来完成 URL 跳转实现路由的加载的,因此和多页面的实现是不一致的。而在安卓和IOS URL的切换上却有这不同的实现。
对于Android,它的每次路由的变换,URL都跟着改变,也就是说它的Landing Page和Current Page同时在变,这就和多页应用实现一样需要在对应做分享的页面做签名。但是对IOS而言,每次路由的变换,URL却不变,也就是说虽然它的Currernt Page在变,但是它的Landing Page不变,所以在做分享的时候就可不需要做处理,只需在Loading Page做分享即可。
import wx from 'weixin-js-sdk'
import { getSign} from '../api/index'
const jsApiList = ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ','onMenuShareWeibo'] export function wxConfig() {
const data={
requestUrl:window.location.href
}
getSign(data)
.then(res=>{
wx.config({
debug: false,
appId: res.appId,
timestamp: res.timestamp,
nonceStr: res.nonceStr,
signature: res.signature,
jsApiList: jsApiList
})
})
} export function wxShare(title,desc,curUrl,img_url,inviteCode) {
const u=navigator.userAgent
const link=curUrl //强调:参数需绝对路径
if(u.indexOf('Android')>-1){
requireConfig()
}
wx.ready(()=> {
wx.onMenuShareTimeline({
title: title,
desc:desc,
imgUrl:img_url,
link:link
})
wx.onMenuShareAppMessage({
title: title,
desc:desc,
imgUrl:img_url,
link:link,
success: function success(result) { },
});
wx.onMenuShareTimeline({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
wx.onMenuShareQQ({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
wx.onMenuShareWeibo({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
wx.onMenuShareQZone({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
})
}
二、微信支付
微信支付需要强调的点就是参数不要写错,包括大小写(ps:前端要是唤起支付失败,我总结出来的点就是参数写错了,如果还有其他问题的话,我觉得你可以直接甩锅为后台)
前端唤起支付大致流程即,前端调用后台支付接口换取appId公众号id,timeStrap时间戳,nonceStr随机数,package预支付id,签名paySign和前端设置加密为MD5(ps:一般为md5加密),然后调用WeixinJSBridge即可
//传必要参数后获取公众号id等信息回调后判断是否有WeixinJSBridge事件 if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady);
}
}else{
this.onBridgeReady();
} //后通过WeixinJSBridge唤起支付
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
debug:true,
"appId": appId,
"timeStamp": response.timestamp,
"nonceStr": response.noncestr,
"package": response.package,
"signType": "MD5",
"paySign": response.sign,
},
function(res){
const errMsg=res.errMsg ? res.errMsg :res.err_msg
if(errMsg.indexOf("ok") != -1 ) { }else if(errMsg.indexOf("cancel") != -1 ){ }else if(errMsg.indexOf("fail") != -1){ }
else{ }
}
);
最后
其实在微信分享和微信支付上面,最重要的还是注意细节~~~
vue开发小结(下)的更多相关文章
- vue开发小结(上)
前言: 18年年底,就一个字,忙,貌似一到年底哪个公司都在冲业绩,包括我们自己开发自己公司的项目也一样得加把劲.自从18年年初立了个flag17年年终总结——走过2017,迎来2018Flag到现在又 ...
- 详解Vue 开发模式下跨域问题
vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' header is prese ...
- 【原创】windows下搭建vue开发环境+IIS部署
[原创]win10下搭建vue开发环境 如果要转发,请注明原作者和原产地,谢谢! 特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图: 详细的安 ...
- windows下搭建vue开发环境+IIS部署
原创]win10下搭建vue开发环境 https://www.cnblogs.com/ixxonline/p/6007885.html 特别说明:下面任何命令都是在windows的命令行工具下进行输 ...
- Vetur:VSCode下强大的Vue开发工具
Vue自从发布以来就一直受到前端开发人员的热爱,而除了一些本身优秀的特征之外,还有就是丰富的插件和工具的支持和更新.虽然现在的编辑器需要安装相应的plugins才能进行Vue组件化开发,但是越来越多优 ...
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- vue开发后台管理系统小结
最近工作需要用vue开发了后台管理系统,由于是第一次开发后台管理系统,中间也遇到了一些坑,想在这里做个总结,也算是对于自己工作的一个肯定.我们金融性质的网站所以就不将代码贴出来哈 一.项目概述 首先工 ...
- VUE在开发环境下实现跨域
1. 跨域设置 VUE项目的 config文件夹下index.js文件中修改 dev: proxyTable中的内容(默认是没有内容的): 添加内容: '/list': { target: 'http ...
- 1.WIN10下搭建vue开发环境
WIN10下搭建vue开发环境 详细的安装步骤如下: 一.安装node.js 说明:安装node.js的windows版本后,会自动安装好node以及包管理工具npm,我们后续的安装将依赖npm工具. ...
随机推荐
- Sql_server基本操作
使用Sql_server创建表,视图,触发器,存储过程,函数等基本操作. create table test1( /* 创建一个表 */ num int ) alter table test1 /* ...
- 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI.SS.Us ...
- Requests 校花网图片爬取
纪念我们闹过的矛盾,只想平淡如水 import requestsimport reurl = 'http://www.xiaohuar.com/list-1-%s.html'for i in rang ...
- 谈谈程序猿求职简历的STAR法则
最近Android/IOS的市场都有点躁动,前两天看业内几位大牛写的关于求职招聘的文章,觉得说的很有道理,暂且吸收进来,同时讲一下简历面试中使用STAR法则.我们在写简历或者面试时,最主要的一个目的, ...
- Centos7下chkconfig设置MySql自动启动
1.将服务文件拷贝到init.d下,并重命名为mysql cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 2.赋予可执 ...
- centos7下安装指定版本mysql5.7.23
现在mysql版本已经到MySQL 8.0(GA)稳定版本了,所以需求是想简单又快速在centos7下安装指定版本例如MySQL 5.7(GA)版本有下面这种方法 首先需要到mysql官网这里下载对应 ...
- JRE、JDK概述
JRE(java Runtime Environment java运行环境) 包括java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开 ...
- 实现strStr()的golang实现
实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...
- 线程间的通信_多生产者多消费者问题_JDK1.5新特性_Lock
对于同步代码块,对于锁的操作是隐式的但是在JDK1.5之前的这种方法效率有点低,判断会很多,后面升级之后有新的解决方案 jdk1.5以后将同步和锁封装成了对象,并将操作锁的隐式方式定义到了该对象中,将 ...
- Mysqldumpslow的用法汇总
mysqldumpslow --help可显示其参数的使用 经常使用的参数: -s,是order的顺序 al 平均锁定时间 ar 平均返回记录时间 at 平均查询时间(默认) c 计 ...