Vue数据双向绑定原理

Vue监听数据变化原理

话不多说上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
let data = {name: 'tyy'};
observe(data);
/**
* 遍历源数据
* @param obj
*/
function observe(obj) {
if (!obj || typeof obj !== 'object') return;
for (let key in obj) {
defineReactive(obj, key, obj[key]);
}
}
/**
* 监听数据
* @param obj
* @param key
* @param val
*/
function defineReactive(obj, key, val) {
// 监听对象的子对象的数据变化
observe(val);
Object.defineProperty(obj, key, {
get: () => {
return val;
},
set: (newValue) => {
val = newValue;
console.log('i am change')
},
writeable: true, // 是否可写
enumerable: true, // 是否可枚举
configurable: false // 是否递归
}

参考博客:https://segmentfault.com/a/1190000004346467

NodeJS入坑集锦

准备工作


需要参数:
token: test, // 微信配置中的token

appId: wx7e46b** // 微信开放平台配置里的appid

appSecret: f47171232cfc69*11e88a3 // 微信开放平台配置里的appsecret

machId: 1449239* // 微信商户平台的商户ID

machSecret: 1ZAqhmo5LzbhdwAU4* // 微信商户平台的api秘钥

notifyUrl: https://example.com // 支付成功回调接口路径

开发步骤
商户系统和微信支付系统主要交互说明:

步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。

步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见统一下单API

步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay

步骤4:商户APP调起微信支付。api参见本章节app端开发步骤说明

步骤5:商户后台接收支付通知。api参见支付结果通知API

步骤6:商户后台查询支付结果。,api参见查询订单API

微信公众号支付


微信公众号支付业务流程图
业务流程图

1.调用微信统一下单

统一下单接口URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder

2.二次签名

调用微信统一下单接口请求成功返回如下:


<![CDATA[SUCCESS]]>
<![CDATA[OK]]>
<![CDATA[wx2421b1c4370ec43b]]>
<![CDATA[10000100]]>
<![CDATA[IITRi8Iabbblz1Jc]]>
<![CDATA[oUpF8uMuAJO_M2pxb1Q9zNjWeS6o]]>
<![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]>
<![CDATA[SUCCESS]]>
<![CDATA[wx201411101639507cbf6ffd8b0779950874]]>
<![CDATA[JSAPI]]>