V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
byte10
V2EX  ›  分享发现

分享一个简单的小程序云开发框架 wx-koa,非常轻便

  •  
  •   byte10 · 2020-06-22 09:31:48 +08:00 · 2395 次点击
    这是一个创建于 1609 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求

    目前小程序云开发提供了托管函数的云引擎,如果每个接口都各自写一个函数,那么对开发无疑是巨大的灾难的。不方便管理,代码共用也比较麻烦。所以能否有框架能像普通的后台开发一样处理前端的请求。

    基于 koa 实现

    1. koa 是一个很有意思的 web 框架,实现很简单,核心代码大概有 100 多行。越简单的东西可玩性就越强,改造起来也方便。
    2. 思路也很简单,就是 mock 一个 request 对象和 response 对象,其他都不改变,继承原有的 application 对象,重写了一些方法。支持了 http 协议的 header, method,让云开发和普通的后台开发提供一致的体验和功能。
    3. 理论上支持大部分 koa 插件,request 对象 mock 不是很完整,只是简单赋值了一些属性数据。response 对象的 end 方法重写了。所以对这 2 个对象有比较深入的依赖,那么可能会不支持。当然目前的已经可以满足大部分需求了。特别的需求可以尝试自己写插件。
    4. 内置了 koa-router,你可以直接使用它,仅仅继承了它,没有做任何改变,也许以后会用的到吧。
    5. 理论上你也可以按那个思路把 egg.js ,express 等框架变成云开发的框架,太重的框架会对 request 对象有比较深入的关联,处理起来可能会麻烦,不兼容。koa 就是最好的选择,也满足了大部分开发的需求。

    使用方式

    请参考 github 上的 wx-koa,很简单。而且不改变你原有的开发方式(不管是前后端都没改变),还是跟以前那样使用 url,data 进行请求。

    其他

    1. 迁移到线下服务器来,迁移成本主要是在数据库的访问层,貌似跟原生的 mongodb 操作方式有些不太一样。目前不知道它们是不是 mongodb 数据库,如果是的话,理论上可以使用自己的 mongodb 客户端模块(参考了腾讯云数据库),它们连接数据库也是通过 secretid,secretkey,可以查看他们代码找到获取这 2 个钥匙的入口,然后放到自己 mongodb 客户端模块中,这里我没有去研究实践,小伙伴可以去搞搞哦,整好留言给我吧。
    2. 既然是小程序,那么管理后台如何访问这些数据库数据?或者访问这些云函数?云开发提供了相关的 api 接口。example 中 managment-express 项目是一个简单云函数代理访问的后台服务,可以满足你的需求哦。里面配置 ENV 和 appid, appsecret,然后就可以访问到云函数接口,跟普通 ajax 保持请求一致。
    2 条回复    2020-09-14 14:28:44 +08:00
    byte10
        1
    byte10  
    OP
       2020-06-22 09:51:56 +08:00
    地址给大家贴一个,github.com/traceless/wx-koa
    byte10
        2
    byte10  
    OP
       2020-09-14 14:28:44 +08:00
    居然没人顶,自己可以顶一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   923 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:39 · PVG 03:39 · LAX 11:39 · JFK 14:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.