需求
目前小程序云开发提供了托管函数的云引擎,如果每个接口都各自写一个函数,那么对开发无疑是巨大的灾难的。不方便管理,代码共用也比较麻烦。所以能否有框架能像普通的后台开发一样处理前端的请求。
基于 koa 实现
- koa 是一个很有意思的 web 框架,实现很简单,核心代码大概有 100 多行。越简单的东西可玩性就越强,改造起来也方便。
- 思路也很简单,就是 mock 一个 request 对象和 response 对象,其他都不改变,继承原有的 application 对象,重写了一些方法。支持了 http 协议的 header, method,让云开发和普通的后台开发提供一致的体验和功能。
- 理论上支持大部分 koa 插件,request 对象 mock 不是很完整,只是简单赋值了一些属性数据。response 对象的 end 方法重写了。所以对这 2 个对象有比较深入的依赖,那么可能会不支持。当然目前的已经可以满足大部分需求了。特别的需求可以尝试自己写插件。
- 内置了 koa-router,你可以直接使用它,仅仅继承了它,没有做任何改变,也许以后会用的到吧。
- 理论上你也可以按那个思路把 egg.js ,express 等框架变成云开发的框架,太重的框架会对 request 对象有比较深入的关联,处理起来可能会麻烦,不兼容。koa 就是最好的选择,也满足了大部分开发的需求。
使用方式
请参考 github 上的 wx-koa,很简单。而且不改变你原有的开发方式(不管是前后端都没改变),还是跟以前那样使用 url,data 进行请求。
其他
- 迁移到线下服务器来,迁移成本主要是在数据库的访问层,貌似跟原生的 mongodb 操作方式有些不太一样。目前不知道它们是不是 mongodb 数据库,如果是的话,理论上可以使用自己的 mongodb 客户端模块(参考了腾讯云数据库),它们连接数据库也是通过 secretid,secretkey,可以查看他们代码找到获取这 2 个钥匙的入口,然后放到自己 mongodb 客户端模块中,这里我没有去研究实践,小伙伴可以去搞搞哦,整好留言给我吧。
- 既然是小程序,那么管理后台如何访问这些数据库数据?或者访问这些云函数?云开发提供了相关的 api 接口。example 中 managment-express 项目是一个简单云函数代理访问的后台服务,可以满足你的需求哦。里面配置 ENV 和 appid, appsecret,然后就可以访问到云函数接口,跟普通 ajax 保持请求一致。