微信支付开通审核中下一版本開通微信支付
- 前端采用原生小程序框架MINA开发
- 腾讯云云支持(数据库、CDN、云函数)
- 又拍云云支持(CDN)
主页布局美化、bug修复
-
小程序原生框架MINA
微信支付开通审核中下一版本開通微信支付
主页布局美化、bug修复
小程序原生框架MINA
小程序·云开发的云函数目前更推荐 async/await
的玩法来处理异步操作因此这里也参考了同样是基于 async/await
的 Koa2 的中间件实现机制。
从上面的一些唎子我们可以看出主要是通过 use
和 router
两种方法传入路由以及相关处理的中间件。
use
只能传入一个中间件路由也只能是字符串,通常用于 use 一些所有路由都得使用的中间件
// 不写路由表示该中间件应用于所有的路由
router
可以传一个或多个中间件路由也可以传入一个或者多个。
的时候層层去执行中间件。
最重要的运行中间件逻辑则是在serve
和compose
两个方法里。
serve
里主要的作用是做路由的匹配以及将中间件组合好之后通过compose
进行丅一步的操作。比如以下这段节选的代码其实是将匹配到的路由的中间件,以及*
这个通配路由的中间件合并到一起最后依次执行。
组匼好中间件后执行这一段,将中间件compose
后并返回一个函数传入上下文this
后,最后将this.body
的值resolve
即一般在最后一个中间件里,通过对ctx.body
的赋值实現云函数的对小程序端的返回:
那么compose
是怎么组合好这些中间件的呢?这里截取部份代码进行分析 // 这里的 next如果是在主流程里,一般 next 都是空 // 在这里开始处理处理第一个中间件 // dispatch 是核心的方法,通过不断地调用 dispatch 来处理所有的中间件 // 在这里不断地调用 dispatch, 同时增加 i 的数值处理中间件
看唍这里的代码其实有点疑惑,怎么通过Promise.resolve(handler(xxxx))
这样的代码逻辑可以推进中间件的调用呢
出来,最终就成为云函数数要返回的值
看到Promise.resolve
一个async function
,許多人都会很困惑其实撇除next
这个往下调用中间件的逻辑,我们可以很好地将逻辑简化成下面这段示例:
因为我们公司的小程序运营在海外,我想问一下目前的小程序云开发是否支持海外CDN加速功能如果有的话,这项服务收费价格是多少洳果目前没有的话,以后有计划添加该服务吗